Как я могу преобразовать серию изображений в PDF из командной строки на Linux? [закрыто]

216

У меня есть сервер сканирования, который я написал в cgi / bash, и хочу иметь возможность конвертировать несколько изображений (все в одной папке) в pdf из командной строки. Как это можно сделать?

Якоб Вайсблат
источник
Смотрите также Как создать PDF из серии изображений? на суперпользователя.
Зрайм
7
Используйте img2pdf , а не ImageMagick. ImageMagick декодирует JPEG, что приводит к потере генерации и в 10–100 раз медленнее, чем img2pdf.
Роберт Флеминг
1
sudo apt-get install gscan2pdf для простого и удобного использования.
М Хазик
1
img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdfдаст вам document.pdfвсе изображения с расширением jpg или JPG в текущем каталоге - одно изображение на страницу. document.pdfвсе изображения будут упорядочены как страницы естественным образом ( -Vопция sort), поэтому нет нужды добавлять начальные нули при нумерации файлов изображений.
Джиммикс

Ответы:

411

Используя imagemagick , вы можете попробовать:

convert page.png page.pdf

Или для нескольких изображений:

convert page*.png mydoc.pdf
Марвин Пинто
источник
7
Что делать, если страница * .png не сортирует изображения так, как вы хотите? например, page_1.png, page_2.png ... page_10.png -> page_10 появится перед page_1
vcarel
38
Для сортировки файлов вы можете использовать:ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
GaloisPlusPlus
26
К вашему сведению, вам почти никогда не нужно lsничего использовать, кроме отображения файлов ... т.е. не анализировать вывод. findэто гораздо более подходящий инструмент. Вот пример convert $(find -maxdepth 1 -type f -name 'page*.png' | sort -n | paste -sd\ ) output.pdf. Имейте в виду, что вышеупомянутая команда не будет работать, если ваши пути содержат пробелы. Добавление символов, которые необходимо экранировать, немного усложняет ситуацию.
6
20
Это просто и работает очень хорошо, спасибо! Чтобы избежать создания огромных файлов PDF, используйте что-то вродеconvert -compress jpeg -quality 85 *.png out.pdf
jlh
13
ImageMagick декодирует JPEG, что приводит к потере генерации . Используйте вместо него img2pdf ; это также в 10–100 раз быстрее.
Роберт Флеминг
13

Используйте convertс http://www.imagemagick.org . (Легко поставляется в виде пакета в большинстве дистрибутивов Linux.)

ziesemer
источник
30
ImageMagick декодирует JPEG, что приводит к потере генерации . Используйте вместо него img2pdf ; это также в 10–100 раз быстрее.
Роберт Флеминг
9
Примечание: img2pdf перемещен в gitlab.mister-muffin.de/josch/img2pdf .
кельвин