Ответ 1
ImageMagick имеет привязки Python.
Я пытаюсь использовать Python для преобразования многостраничного PDF в ряд JPEG. Я могу легко разделить PDF на отдельные страницы с помощью доступных инструментов, но я не смог найти ничего, что могло бы скрывать PDF файлы для изображений.
PIL не работает, поскольку он не может читать PDF файлы. Эти два параметра, которые я нашел, используют либо GhostScript, либо ImageMagick через оболочку. Это не жизнеспособный вариант для меня, так как эта программа должна быть кросс-платформенной, и я не могу быть уверен, что любая из этих программ будет доступна на машинах, которые будут установлены и использованы.
Есть ли там библиотеки Python, которые могут это сделать?
ImageMagick имеет привязки Python.
Вы не можете избежать зависимости Ghostscript. Даже Imagemagick полагается на Ghostscript для своих функций чтения PDF. Причиной этого является сложность формата PDF: в PDF файле не просто содержится информация растрового изображения, но в основном векторные фигуры, прозрачные пленки и т.д. Кроме того, довольно сложно определить, какой из этих объектов появляется на какой странице.
Таким образом, правильный рендеринг PDF-страницы явно выходит за рамки чистой библиотеки Python.
Хорошей новостью является то, что Ghostscript предварительно установлен на многих окнах и системах Linux, потому что он также необходим всем этим принтерам PDF (кроме Adobe Acrobat).
Здесь для меня использовался модуль python ghostscript (установленный '$ pip install ghostscript'):
import ghostscript
def pdf2jpeg(pdf_input_path, jpeg_output_path):
args = ["pdf2jpeg", # actual value doesn't matter
"-dNOPAUSE",
"-sDEVICE=jpeg",
"-r144",
"-sOutputFile=" + jpeg_output_path,
pdf_input_path]
ghostscript.Ghostscript(*args)
Я также установил Ghostscript 9.18 на свой компьютер и, вероятно, не работал бы иначе.
Если вы используете Linux, некоторые версии поставляются с утилитой командной строки под названием "pdftopbm" из коробки. Проверьте netpbm
Возможно, релевантно: http://www.swftools.org/gfx_tutorial.html