Как я могу преобразовать серию изображений в PDF из командной строки на Linux? [закрыто]
216
У меня есть сервер сканирования, который я написал в cgi / bash, и хочу иметь возможность конвертировать несколько изображений (все в одной папке) в pdf из командной строки. Как это можно сделать?
Используйте 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), поэтому нет нужды добавлять начальные нули при нумерации файлов изображений.
Что делать, если страница * .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.)
sudo apt-get install gscan2pdf
для простого и удобного использования.img2pdf $(find . -iname '*.jpg' | sort -V) -o ./document.pdf
даст вамdocument.pdf
все изображения с расширением jpg или JPG в текущем каталоге - одно изображение на страницу.document.pdf
все изображения будут упорядочены как страницы естественным образом (-V
опцияsort
), поэтому нет нужды добавлять начальные нули при нумерации файлов изображений.Ответы:
Используя imagemagick , вы можете попробовать:
Или для нескольких изображений:
источник
ls page*.png | sort -n | tr '\n' ' ' | sed 's/$/\ mydoc.pdf/' | xargs convert
ls
ничего использовать, кроме отображения файлов ... т.е. не анализировать вывод.find
это гораздо более подходящий инструмент. Вот примерconvert $(find -maxdepth 1 -type f -name 'page*.png' | sort -n | paste -sd\ ) output.pdf
. Имейте в виду, что вышеупомянутая команда не будет работать, если ваши пути содержат пробелы. Добавление символов, которые необходимо экранировать, немного усложняет ситуацию.convert -compress jpeg -quality 85 *.png out.pdf
Используйте
convert
с http://www.imagemagick.org . (Легко поставляется в виде пакета в большинстве дистрибутивов Linux.)источник