Ne v kontakte Asocial programmer's blog

png2pdf: как сшить несколько картинок в один pdf файл

Возникла нужда сшить несколько картинок в один pdf файл. Гугль выдал несколько программ, но ни одна из них не имелась в репозитариях, и собрать самому тоже с первой попытки не получилось. Поэтому решил поколдовать сам.

В результате вышел такой скрипт:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/bash
# (c) Alek$ http://nevkontakte.org.ru
# Required packages: netpbm, ghostscript-library, pdftk
if [[ "$#" -lt "2" ]]
then
echo "mypng2pdf.sh by Alek$, http://nevkontakte.org.ru"
echo "	USAGE:"
echo "	$0 file1.png ... fileN.png output.pdf"
echo ""
exit 0
fi
while [ "$#" -gt "1" ]
do
pngtopnm $1 | pnmtops | ps2pdf - $1.myp2p-pdf
shift 1
done
pdftk *.myp2p-pdf cat output $1
rm *.myp2p-pdf

Для работы ему нужны пакеты netpbm, ghostscript-library, pdftk, которые есть почти во всех распространенных дистрибутивах.

Используется он так:

mypng2pdf.sh file1.png ... fileN.png output.pdf

Кроме того, он легко модифицируется для обработки любых других форматов, для этого надо заменить команду pngtopnm на требуемую (jpegtopnm, giftopnm и т.д.)

Enjoy: mypng2pdf.sh!

UPD.  Спустя полгода нашел отличную программу gscan2pdf, которая умеет сшивать картинки в pdf, при этом тонко настраивая разнообразные параметры, включая качество, метаданные и т.д.