Python: extraiga una página de un pdf como un jpeg
image (8)
@gaurwraith, instale poppler para Windows y use pdftoppm.exe de la siguiente manera:
-
Descargue el archivo zip con los últimos archivos binarios / dlls de Poppler desde http://blog.alivate.com.au/poppler-windows/ y descomprímalo en una nueva carpeta en la carpeta de archivos de su programa. Por ejemplo: "C: / Archivos de programa (x86) / Poppler".
-
Agregue "C: / Archivos de programa (x86) / Poppler / poppler-0.68.0 / bin" a su variable de entorno SYSTEM PATH.
-
Desde la línea cmd, instale el módulo pdf2image -> "pip install pdf2image".
- O bien, ejecute directamente pdftoppm.exe desde su código utilizando el módulo de subproceso de Python como lo explicó el usuario Basj.
@vishvAs vAsuki, este código debe generar los jpgs que desee a través del módulo de subproceso para todas las páginas de uno o más archivos PDF en una carpeta determinada:
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))
O usando el módulo 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")
En el código python, ¿cómo guardar de manera eficiente una determinada página en un pdf como un archivo jpeg? (Caso de uso: tengo un servidor web de matraz de Python donde se cargarán pdf-s y se almacenará jpeg-s correspondiente a cada página).
Esta solución está cerca, pero el problema es que no convierte toda la página a JPEG.
De hecho, la biblioteca
pdf2image
Python (utilizada en la otra respuesta) no hace
mucho más que lanzar
pdttoppm
con
subprocess.Popen
, así que aquí hay una versión corta que lo hace directamente:
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
Aquí está el enlace de instalación de Windows para
pdftoppm
(contenido en un paquete llamado poppler):
http://blog.alivate.com.au/poppler-windows/
Encontré esta solución simple, PyMuPDF, salida a archivo png
import fitz
pdffile = "infile.pdf"
doc = fitz.open(pdffile)
page = doc.loadPage(0) #number of page
pix = page.getPixmap()
output = "outfile.png"
pix.writePNG(output)
Existe una utilidad llamada pdftojpg que se puede usar para convertir el pdf a img
Puede encontrar el código aquí https://github.com/pankajr141/pdf2jpg
from pdf2jpg import pdf2jpg
inputpath = r"D:/inputdir/pdf1.pdf"
outputpath = r"D:/outputdir"
# To convert single page
result = pdf2jpg.convert_pdf2jpg(inputpath, outputpath, pages="1")
print(result)
# To convert multiple pages
result = pdf2jpg.convert_pdf2jpg(inputpath, outputpath, pages="1,0,3")
print(result)
# to convert all pages
result = pdf2jpg.convert_pdf2jpg(inputpath, outputpath, pages="ALL")
print(result)
Le recomendaría que use Aspose.PDF Cloud SDK para convertir PDF a JPEG. Aquí hay un example :
curl -v "https://api.aspose.cloud/v1.1/pdf/test.pdf/pages/1/convert/jpeg?outpath=test.jpeg" -X PUT -H "Content-Type: application/json" -H "Accept: application/json" -H "Authorization: ..."
Espero eso ayude. De lo contrario, no dudes en preguntarme.
Nota : Estoy trabajando como desarrollador evangelista en Aspose.
No es necesario instalar Poppler en su sistema operativo. Esto funcionará:
pip install Wand
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)
Se puede usar la biblioteca pdf2image.
Puedes instalarlo simplemente usando,
pip install pdf2image
Una vez instalado, puede usar el siguiente código para obtener imágenes.
from pdf2image import convert_from_path
pages = convert_from_path(''pdf_file'', 500)
Guardar páginas en formato jpeg
for page in pages:
page.save(''out.jpg'', ''JPEG'')
Editar: el repositorio de Github
pdf2image
también menciona que usa
pdftoppm
y que requiere otras instalaciones:
pdftoppm es la pieza de software que hace la magia real. Se distribuye como parte de un paquete mayor llamado poppler . Los usuarios de Windows deberán instalar poppler para Windows . Los usuarios de Mac deberán instalar poppler para Mac . Los usuarios de Linux tendrán pdftoppm preinstalado con la distribución (probado en Ubuntu y Archlinux) si no es así, ejecute
sudo apt install poppler-utils
.
Aquí está la instalación adecuada para Windows: http://blog.alivate.com.au/poppler-windows/
Utilizo una opción (quizás) mucho más simple de pdf2image:
cd $dir for f in *.pdf do if [ -f "${f}" ]; then n=$(echo "$f" | cut -f1 -d''.'') pdftoppm -scale-to 1440 -png $f $conv/$n rm $f mv $conv/*.png $dir fi done
Esta es una pequeña parte de un script bash en un bucle para el uso de un dispositivo de conversión estrecho. Comprueba cada 5 segundos los archivos pdf agregados (todos) y los procesa. Esto es para un dispositivo de demostración, al final la conversión se realizará en un servidor remoto. Convertir a .PNG ahora, pero .JPG también es posible.
Esta conversión, junto con las transiciones en formato A4, muestra un video, dos textos de desplazamiento suave y un logotipo (con transición en tres versiones) configura el Pi3 en casi 4x 100% de carga de CPU ;-)