En code python, comment enregistrer efficacement une certaine page d'un fichier PDF au format jpeg? (Cas d'utilisation: j'ai un serveur Web en flacon python où pdf-s sera chargé et jpeg correspondant à chaque page est stocké.)
Cette solution est proche, mais le problème est qu'elle ne convertit pas l'intégralité de la page au format jpeg.
La bibliothèque pdf2image peut être utilisée.
Vous pouvez l'installer simplement en utilisant,
pip install pdf2image
Une fois installé, vous pouvez utiliser le code suivant pour obtenir des images.
from pdf2image import convert_from_path
pages = convert_from_path('pdf_file', 500)
Enregistrement de pages au format JPEG
for page in pages:
page.save('out.jpg', 'JPEG')
Edit: le repo Github pdf2image mentionne également qu’il utilise pdftoppm
et qu’il nécessite d’autres installations:
pdftoppm est le logiciel qui fait la magie. Il est distribué dans le cadre d'un paquet plus important appelé poppler . Les utilisateurs Windows devront installer poppler pour Windows . Les utilisateurs de Mac devront installer poppler pour Mac . Les utilisateurs de Linux auront préinstallé pdftoppm avec la distribution (testée sur Ubuntu et Archlinux) si ce n’est pas le cas, exécutez
Sudo apt install poppler-utils
.
Voici la bonne installation pour Windows: http://blog.alivate.com.au/poppler-windows/
La bibliothèque Python pdf2image
(utilisée dans l'autre réponse) ne fait en réalité pas beaucoup plus que de lancerpdttoppm
avec subprocess.Popen
, voici donc une version courte le faisant directement:
PDFTOPPMPATH = r"D:\Documents\software\____PORTABLE\poppler-0.51\bin\pdftoppm.exe"
PDFFILE = "SKM_28718052212190.pdf"
import subprocess
subprocess.Popen('"%s" -png "%s" out' % (PDFTOPPMPATH, PDFFILE)) #have updated the values here
Voici le lien d'installation de Windows pour pdftoppm
(contenu dans un paquet nommé poppler): http://blog.alivate.com.au/poppler-windows/
@gaurwraith, install poppler pour Windows et utilisez pdftoppm.exe comme suit:
Téléchargez le fichier Zip contenant les derniers fichiers binaires/dll de Poppler à partir de http://blog.alivate.com.au/poppler-windows/ et décompressez-le dans un nouveau dossier situé dans le dossier des fichiers de votre programme. Par exemple: "C:\Program Files (x86)\Poppler".
Ajoutez "C:\Program Files (x86)\Poppler\poppler-0.68.0\bin" à votre variable d'environnement SYSTEM PATH.
Depuis le programme cmd line, installez le module pdf2image -> "pip install pdf2image".
@vishvAs vAsuki, ce code devrait générer les fichiers jpgs de votre choix via le module de sous-processus pour toutes les pages d'un ou plusieurs pdfs d'un dossier donné:
import os, subprocess
pdf_dir = r"C:\yourPDFfolder"
os.chdir(pdf_dir)
pdftoppm_path = r"C:\Program Files (x86)\Poppler\poppler-0.68.0\bin\pdftoppm.exe"
for pdf_file in os.listdir(pdf_dir):
if pdf_file.endswith(".pdf"):
subprocess.Popen('"%s" -jpeg %s out' % (pdftoppm_path, pdf_file))
Ou en utilisant le module pdf2image:
import os
from pdf2image import convert_from_path
pdf_dir = r"C:\yourPDFfolder"
os.chdir(pdf_dir)
for pdf_file in os.listdir(pdf_dir):
if pdf_file.endswith(".pdf"):
pages = convert_from_path(pdf_file, 300)
pdf_file = pdf_file[:-4]
for page in pages:
page.save("%s-page%d.jpg" % (pdf_file,pages.index(page)), "JPEG")
Il n'est pas nécessaire d'installer Poppler sur votre système d'exploitation. Cela fonctionnera:
pip installer la baguette
from wand.image import Image
with(Image(filename="somefile.pdf", resolution=120)) as source:
images = source.sequence
pages = len(images)
for i in range(pages):
n = i + 1
newfilename = f[:-4] + str(n) + '.jpeg'
Image(images[i]).save(filename=newfilename)