2008-12-01 5 views
39

Я пытаюсь использовать Python для преобразования многостраничного PDF в ряд JPEG. Я могу легко разбить PDF на отдельные страницы с помощью доступных инструментов, но я не смог найти ничего, что могло бы скрывать PDF-файлы для изображений.Преобразование PDF в ряд изображений с помощью Python

PIL не работает, так как он не может читать PDF-файлы. Эти два параметра, которые я нашел, используют либо GhostScript, либо ImageMagick через оболочку. Это не жизнеспособный вариант для меня, так как эта программа должна быть кросс-платформенной, и я не могу быть уверен, что любая из этих программ будет доступна на машинах, которые будут установлены и использованы.

Есть ли там библиотеки Python, которые могут это сделать?

+0

Вы когда-нибудь находили решение? Я перешел на работу, но не могу заставить ImageMagick уважать страницы. – stormlifter 2012-08-01 23:53:32

+0

Надеюсь, что это поможет - [http://stackoverflow.com/questions/34129995/pdf-to-raw-image] (http://stackoverflow.com/questions/34129995/pdf-to-raw-image) – 2015-12-07 16:09:00

ответ

17

ImageMagick имеет Python bindings.

+0

I Я бы хотел использовать эту идею, вы можете просто включить библиотеку ImageMagick в свой проект - просто убедитесь, что вы просматриваете условия лицензии, чтобы вы могли поместить соответствующие материалы в свой readme. – Coderer 2008-12-18 15:43:39

+13

. Учтите, какие привязки могут быть полезны? – 2013-02-12 12:49:21

4

Вы не можете избежать зависимости Ghostscript. Даже Imagemagick полагается на Ghostscript для своих функций чтения PDF. Причиной этого является сложность формата PDF: PDF не просто содержит информацию растрового изображения, но в основном векторные фигуры, прозрачные пленки и т. Д. Кроме того, довольно сложно определить, какой из этих объектов появляется на какой странице.

Таким образом, правильный рендеринг PDF-страницы явно выходит за рамки чистой библиотеки Python.

Хорошей новостью является то, что Ghostscript предварительно установлен на многих окнах и системах Linux, потому что он также необходим всем этим принтерам PDF (кроме Adobe Acrobat).

1

Если вы используете Linux, некоторые версии поставляются с утилитой командной строки под названием «pdftopbm» из коробки. Проверьте netpbm

4

Вот, Что работает для меня, используя модуль питона Ghostscript (устанавливается на '$ пип установить 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 на моем компьютер, и это, вероятно, не сработало бы иначе.