Tengo algunos archivos JPG de 1924 × 2972 en una carpeta (/ img /). Quiero 1) Convertirlos a PDF y 2) Combinarlos en un solo PDF. Pero no tengo éxito. Soy nuevo en Python. Por favor, hágame saber cómo puedo proceder.
from PIL import Image import glob from fpdf import FPDF # imagelist = [] for filename in glob.glob('img/*.jpg'): #assuming jpg im=Image.open(filename) imagelist.append(im) pdf = FPDF() # imagelist is the list with all image filenames for image in imagelist: pdf.add_page() pdf.image(image, 10,210,297) pdf.output("yourfile.pdf", "F")
Error:
File "", line 1, in pdf.image(image, 10,210,297) File "/Users/xyz/anaconda/lib/python3.6/site-packages/fpdf/fpdf.py", line 150, in wrapper return fn(self, *args, **kwargs) File "/Users/xyz/anaconda/lib/python3.6/site-packages/fpdf/fpdf.py", line 960, in image if not name in self.images: TypeError: unhashable type: 'JpegImageFile'
En su segundo ciclo, debe hacer referencia a la ruta de cada jpg:
pdf.image(image, 10,210,297)
Edición: adicionalmente, creo que solo necesitas la ruta de acceso a cada imagen (en lugar de abrir cada imagen con Image.open
. Prueba lo siguiente:
import glob from fpdf import FPDF # imagelist = glob.glob('img/*.jpg') pdf = FPDF() # imagelist is the list with all image filenames for image in imagelist: pdf.add_page() pdf.image(image, 10,210,297) pdf.output("yourfile.pdf", "F")