Чтобы узнать подробные настройки «делегатов» ImageMagick (внешние программы, которые использует IM, например Ghostscript), наберите
convert -list delegate
(В моей системе это список из 32 различных команд.) Теперь, чтобы увидеть, какие команды используются для преобразования в PNG, используйте:
convert -list delegate | findstr /i png
Хорошо, это было для Windows. Вы не сказали, какую ОС вы используете. [*] Если вы работаете в Linux, попробуйте это:
convert -list delegate | grep -i png
Вы обнаружите, что IM генерирует PNG только из PS или EPS. Итак, как IM получает (E) PS из вашего PDF? Легко:
convert -list delegate | findstr /i PDF
convert -list delegate | grep -i PDF
Ах! Он использует Ghostscript для преобразования PDF => PS, а затем снова использует Ghostscript для преобразования PS => PNG. Работает, но не самый эффективный способ , если вы знаете, что Ghostscript может делать PDF => PNG за один go. И быстрее. И в гораздо лучшем качестве.
Об обработке IM преобразования PDF-файлов в изображения с помощью делегата Ghostscript вы должны в первую очередь знать две вещи:
- По умолчанию, если вы не укажете дополнительный параметр, Ghostscript будет выводить изображения с разрешением 72 точек на дюйм. Вот почему в ответе Карла было предложено добавить
-density 600
, что говорит Ghostscript использовать разрешение 600 dpi для вывода изображения.
- Обход IM для вызова Ghostscript дважды для преобразования сначала
PDF => PS
, а затем PS => PNG
- настоящая ошибка. Потому что вы никогда выигрываете и не теряете качества на первом этапе, но очень часто теряете некоторые из них. Причины:
- PDF может обрабатывать прозрачные пленки, что PostScript не может.
- PDF может встраивать шрифты TrueType, чего не может Ghostscript. etc.pp.
Преобразование в направлении
PS => PDF
не так критично ....)
Именно поэтому я бы посоветовал вам конвертировать PDF-файлы за один раз в PNG (или JPEG), используя Ghostscript напрямую. И используйте самую последнюю версию 8.71 (скоро выйдет 9,01) Ghostscript! Вот примеры команд:
gswin32c.exe ^
-sDEVICE=pngalpha ^
-o output/page_%03d.png ^
-r600 ^
d:/path/to/your/input.pdf
(Это командная строка для Windows. В Linux используйте gs
вместо gswin32c.exe
и \
вместо ^
.) Эта команда ожидает найти подкаталог output
, в котором будет храниться отдельный файл для каждой страницы PDF. Чтобы получить JPEG хорошего качества, попробуйте
gs \
-sDEVICE=jpeg \
-o output/page_%03d.jpeg \
-r600 \
-dJPEGQ=95 \
/path/to/your/input.pdf
(версия команды Linux). Это прямое преобразование позволяет избежать промежуточного формата PostScript, который может потерять шрифт TrueType и информацию об объекте прозрачности, которые были в исходном файле PDF.
[*] Ооо! Сначала я не увидел твой тег "linux" ...