2008-12-01 10 views
39

Estoy intentando usar Python para convertir un PDF de varias páginas en una serie de archivos JPEG. Puedo dividir el PDF en páginas individuales con la suficiente facilidad con las herramientas disponibles, pero no he podido encontrar nada que pueda encubrir archivos PDF a imágenes.Conversión de un PDF a una serie de imágenes con Python

PIL no funciona, ya que no puede leer archivos PDF. Las dos opciones que he encontrado están usando GhostScript o ImageMagick a través del shell. Esta no es una opción viable para mí, ya que este programa debe ser multiplataforma, y ​​no estoy seguro de que ninguno de esos programas esté disponible en las máquinas en las que se instalará y utilizará.

¿Hay alguna biblioteca de Python que pueda hacer esto?

+0

¿Alguna vez encontró una solución? Me estoy convirtiendo al trabajo, pero parece que ImageMagick no respeta las páginas. – stormlifter

+0

Espero que esto ayude - [http://stackoverflow.com/questions/34129995/pdf-to-raw-image] (http://stackoverflow.com/questions/34129995/pdf-to-raw-image) –

Respuesta

17

ImageMagick tiene Python bindings.

+0

I Me gustaría probar que sí, puedes incluir la biblioteca de ImageMagick con tu proyecto, solo asegúrate de revisar los términos de la licencia para que puedas poner las cosas apropiadas en tu archivo readme – Coderer

+13

. ¿Cuidados para detallar qué enlaces podrían ser útiles? –

4

No se puede evitar la dependencia de Ghostscript. Incluso Imagemagick confía en Ghostscript para sus funciones de lectura de PDF. La razón de esto es la complejidad del formato PDF: un PDF no solo contiene información de mapas de bits, sino principalmente formas vectoriales, transparencias, etc. Además, es bastante complejo descubrir cuáles de estos objetos aparecen en cada página.

Por lo tanto, la representación correcta de una página PDF está claramente fuera del alcance de una biblioteca de Python pura.

La buena noticia es que Ghostscript está preinstalado en muchas ventanas y sistemas Linux, porque también lo necesitan todas las impresoras PDF (excepto Adobe Acrobat).

1

Si usa linux, algunas versiones vienen con una utilidad de línea de comandos llamada 'pdftopbm' lista para usar. Salida netpbm

4

Aquí es cuál está trabajó para mí usando el módulo Python ghostscript (instalado por '$ pip instalar 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) 

También he instalado Ghostscript 9.18 en mi computadora y probablemente no habría funcionado de otra manera.

+0

Esto parece crear la nueva imagen, y puedo ver la miniatura en PDF, pero por alguna razón no cierra el archivo del nuevo archivo JPEG creado. Obtuve esta salida de python '##### 246643328 c_void_p (246643328L)' alguna idea? – Jed

+0

¿me pueden ayudar a resolver mi problema en este caso? https://stackoverflow.com/questions/44448552/python-ghostscript-not-closing-output-file – Jed

+1

ghostscript no parece tener soporte para python3 – unlockme

Cuestiones relacionadas