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

Alek$ ср, 03/06/2019 - 15:36

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

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


#!/bin/bash
# (c) Alek$ http://stalker-x.ru
# Required packages: netpbm, ghostscript-library, pdftk
if [[ "$#" -lt "2" ]]
then
 echo "mypng2pdf.sh by Alek$, http://stalker-x.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!

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



Trackback URL for this post:

/trackback/330
Прикрепленный файл Размер
mypng2pdf.sh 410 байтов
Ninonya сб, 13/06/2019 - 18:32

спасибки за помощь на работе нужно было презентацию в pdf создать ваша статья оказалась очень ксати

Alek$ сб, 13/06/2019 - 18:57

Не за что :)

Asya ср, 10/03/2020 - 12:05

Хех, нормально. Даже не думал что таким простым скриптом можно картинки в пдф конвертировать. Спасибо за скрипт, пригодится.

Lidiya чт, 11/03/2020 - 04:48

А для каких еще форматов его можно смодулировать?

Alek$ чт, 11/03/2020 - 18:58

Практически все популярные форматы.

Maryuta пт, 12/03/2020 - 03:43

Я как раз искал подобное решение для своего проэкта, только пришлось немного переделать. Спасибо.



Отправить комментарий

CAPTCHA
Вы точно не бот?
4 + 1 =
Without JavaScript you won't pass captcha test, sorry. Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.