В настоящее время я использую ImageMagick для преобразования PDF-файлов в растровые изображения JPEG. Это мучительно медленно и занимает много памяти.
Команда, которую я использовал, была:
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg
Я думаю, что это медленно, потому что он использует Ghostscript. Но должен быть более быстрый способ сделать это на компьютере с Linux.
Кто-нибудь нашел лучшее решение?
pdf
imagemagick
ghostscript
mat3001
источник
источник
Ответы:
Использование Ghostscript напрямую (вместо использования команды ImageMagick
convert
, которая вызывает Ghostscript косвенно) действительно быстрее. И это дает вам больше контроля над параметрами преобразования. Пытатьсягде
-o
: определяет выходной путь + имя файла (и сохраняет использование-dBATCH -dNOPAUSE
)-dJPEGQ
: устанавливает качество JPEG на 95%-r
: устанавливает разрешение 600 точек на дюйм-g
: устанавливает размер изображения 4960x7016px-sDEVICE
: устанавливает вывод в формате JPEGЭта команда, вероятно, все еще будет замедляться для вас и создавать файлы больше ожидаемого. Для файлов меньшего размера и более быстрого выполнения попробуйте это (что, вероятно, близко к качеству вывода вашей
convert
командной строки):или даже
(что дает разрешение 72 точек на дюйм, что часто достаточно для большинства экранов и большинства веб-приложений).
источник
Кстати, одна из причин, по которой ImageMagick работает намного медленнее, заключается в том, что он дважды вызывает Ghostscript. Он не конвертирует PDF => PNG за один раз, но использует 2 разных шага:
PDF => PostScript
конвертации;PostScript => PNG
преобразования.Вы можете узнать подробные настройки «делегатов» ImageMagick (внешние программы, которые использует ImageMagick, например Ghostscript), набрав
(В моей системе это список из 32 различных команд.) Теперь, чтобы увидеть, какие команды используются для преобразования в PNG, используйте это:
Хорошо, это было для Linux. Если вы используете Windows, попробуйте это:
Вы обнаружите, что IM генерирует PNG только из PS или EPS. Итак, как IM получает (E) PS из вашего PDF? Легко:
Ах! Он использует Ghostscript для преобразования PDF => PS, затем снова использует Ghostscript для преобразования PS => PNG. Работает, но не самый эффективный способ, если вы знаете, что Ghostscript может сделать PDF => PNG за один раз. И быстрее. И в гораздо лучшем качестве.
Об обработке IM преобразования PDF в изображения через делегата Ghostscript вы должны знать две вещи, прежде всего:
-density 600
в качествеconvert
параметра, который говорит Ghostscript, использовать разрешение 600 точек на дюйм для вывода изображения.PDF => PS
а затемPS => PNG
- настоящая ошибка. Потому что вы никогда не выигрываете и не теряете качество на первом этапе, но очень часто теряете его. Причины:(Преобразование в обратном направлении
PS => PDF
, поэтому не так критично ....)Вот почему я предложил вам конвертировать PDF-файлы за один раз в PNG (или JPEG), используя Ghostscript напрямую. И использовать самую последнюю версию 8.71 (скоро будет выпущена: 9.00) Ghostscript ...
источник
Программа
pdftoppm
из пакета poppler также может создавать JPEG, и для меня это примерно в два раза быстрее, чем при использовании,gs
как описано выше:источник
По моему опыту, MuPDF намного быстрее, чем Ghostscript. Это гораздо более новый проект без большой доли в GS. Попробуйте, если он подходит для вашего использования!
mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf
Если у вас более старый дистрибутив linux и установлены mupdf-tools из репозитория, он
mudraw
все равно может называтьсяpdfdraw
Затем вам нужно конвертировать PNG в JPEG, используя, например, imagemagick. Но это все равно будет быстрее, чем Ghostscript.
источник