2008-12-01 8 views
39

J'essaye d'utiliser Python pour convertir un fichier PDF de plusieurs pages en une série de fichiers JPEG. Je peux diviser le PDF en pages individuelles assez facilement avec les outils disponibles, mais je n'ai pas été en mesure de trouver quelque chose qui puisse cacher des fichiers PDF à des images. PIL ne fonctionne pas, car il ne peut pas lire les fichiers PDF. Les deux options que j'ai trouvées utilisent GhostScript ou ImageMagick via le shell. Ce n'est pas une option viable pour moi, car ce programme doit être multi-plateforme, et je ne peux pas être sûr que l'un ou l'autre de ces programmes sera disponible sur les machines sur lesquelles il sera installé et utilisé.Conversion d'un fichier PDF en une série d'images avec Python

Y a-t-il des bibliothèques Python qui peuvent faire cela?

+0

Avez-vous déjà trouvé une solution? Je me suis converti au travail, mais je n'arrive pas à faire en sorte que ImageMagick respecte les pages. – stormlifter

+0

Espérons que cela aide - [http://stackoverflow.com/questions/34129995/pdf-to-raw-image] (http://stackoverflow.com/questions/34129995/pdf-to-raw-image) –

Répondre

17

ImageMagick a Python bindings.

+0

I J'aimerais ajouter que vous pouvez simplement inclure la bibliothèque ImageMagick dans votre projet. Assurez-vous de lire les termes de la licence afin de pouvoir mettre les éléments appropriés dans votre readme. – Coderer

+13

Vous avez besoin de précisions sur les liens qui pourraient vous être utiles? –

4

Vous ne pouvez pas éviter la dépendance Ghostscript. Même Imagemagick s'appuie sur Ghostscript pour ses fonctions de lecture PDF. La raison en est la complexité du format PDF: un PDF ne contient pas seulement des informations bitmap, mais surtout des formes vectorielles, des transparences, etc. En outre, il est assez complexe de savoir lequel de ces objets apparaît sur quelle page.

Ainsi, le rendu correct d'une page PDF est clairement hors de portée pour une bibliothèque Python pure. La bonne nouvelle est que Ghostscript est pré-installé sur de nombreux systèmes Windows et Linux, car il est également nécessaire pour toutes les imprimantes PDF (à l'exception d'Adobe Acrobat).

1

Si vous utilisez Linux, certaines versions sont livrées avec un utilitaire de ligne de commande appelé 'pdftopbm' prêt à l'emploi. Consultez netpbm

4

est ici ce qui est travaillé pour moi en utilisant le module de Ghostscript python (installé par 'pépin $ installer 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) 

J'ai aussi installé Ghostscript 9.18 sur mon ordinateur et il n'aurait probablement pas travaillé autrement.

+0

Cela semble créer la nouvelle image, et je peux voir la miniature pdf, mais pour une raison quelconque, il ne ferme pas le fichier du nouveau jpeg créé. J'ai obtenu cette sortie de python '##### 246643328 c_void_p (246643328L)' des idées? – Jed

+0

pouvez-vous aider à résoudre mon problème sur ce cas? https://stackoverflow.com/questions/44448552/python-ghostscript-not-closing-output-file – Jed

+1

ghostscript ne semble pas avoir de support pour python3 – unlockme

Questions connexes