leer - reportlab python
Cómo crear archivos PDF en Python (13)
Estoy trabajando en un proyecto que toma algunas imágenes del usuario y luego crea un archivo PDF que contiene todas estas imágenes.
¿Hay alguna forma o herramienta para hacer esto en Python? Por ejemplo, para crear un archivo PDF (o eps, ps) a partir de la imagen 1 + imagen 2 + imagen 3 -> archivo PDF?
Aquí está mi experiencia después de seguir los consejos en esta página.
pyPDF no puede incrustar imágenes en archivos. Solo puede dividirse y fusionarse. (Fuente: Ctrl + F a través de su página de documentación ) Lo cual es genial, pero no si tienes imágenes que no están ya integradas en un PDF.
pyPdf no parece tener ninguna documentación adicional además de pyPDF.
ReportLab es muy extenso. ( Userguide ) Sin embargo, con un poco de Ctrl + F y grepping a través de su fuente, obtuve esto:
- Primero, descargue el instalador de Windows y la source
Luego prueba esto en la línea de comando de Python:
from reportlab.pdfgen import canvas from reportlab.lib.units import inch, cm c = canvas.Canvas(''ex.pdf'') c.drawImage(''ar.jpg'', 0, 0, 10*cm, 10*cm) c.showPage() c.save()
Todo lo que necesitaba era obtener un montón de imágenes en un PDF, para poder ver cómo se ven e imprimirlas. Lo anterior es suficiente para lograr ese objetivo.
ReportLab es excelente, pero se beneficiaría de incluir helloworlds como el anterior de forma destacada en su documentación.
Aquí hay una solución que funciona solo con los paquetes estándar. matplotlib
tiene un backend PDF para guardar las cifras en PDF. Puede crear figuras con subtramas, donde cada subtrama es una de sus imágenes. Tiene total libertad para meterse con la figura: Agregar títulos, jugar con posición, etc. Una vez que haya terminado su figura, guárdela en PDF. Cada llamada a savefig
creará otra página de PDF.
El siguiente ejemplo representa 2 imágenes una al lado de la otra, en la página 1 y la página 2.
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt
from scipy.misc import imread
import os
import numpy as np
files = [ "Column0_Line16.jpg", "Column0_Line47.jpg" ]
def plotImage(f):
folder = "C:/temp/"
im = imread(os.path.join(folder, f)).astype(np.float32) / 255
plt.imshow(im)
a = plt.gca()
a.get_xaxis().set_visible(False) # We don''t need axis ticks
a.get_yaxis().set_visible(False)
pp = PdfPages("c:/temp/page1.pdf")
plt.subplot(121)
plotImage(files[0])
plt.subplot(122)
plotImage(files[1])
pp.savefig(plt.gcf()) # This generates page 1
pp.savefig(plt.gcf()) # This generates page 2
pp.close()
Creo que matplotlib tiene la capacidad de serializar gráficos, texto y otros objetos en un documento pdf.
Depende del formato en el que estén sus archivos de imagen, pero para un proyecto aquí en el trabajo utilicé la herramienta tiff2pdf en LibTIFF de RemoteSensing.org . Básicamente usé el subproceso para llamar a tiff2pdf.exe con el argumento apropiado para leer el tipo de tiff que tenía y generar el tipo de PDF que quería. Si no son tiffs, probablemente podría convertirlos a tiffs usando PIL, o tal vez encontrar una herramienta más específica para su tipo de imagen (o más genérica si las imágenes serán diversas) como ReportLab mencionado anteriormente.
En realidad puedes probar xhtml2pdf http://flask.pocoo.org/snippets/68/
He hecho esto bastante en PyQt y funciona muy bien. Qt tiene un amplio soporte para imágenes, fuentes, estilos, etc. y todos ellos pueden escribirse en documentos PDF.
Puedes probar this (Python-for-PDF-Generation) o puedes probar PyQt , que tiene soporte para imprimir en pdf.
Python para la generación de PDF
El Formato de documento portátil (PDF) le permite crear documentos que se ven exactamente iguales en todas las plataformas. A veces, un documento PDF debe generarse dinámicamente, sin embargo, y eso puede ser todo un desafío. Afortunadamente, hay bibliotecas que pueden ayudar. Este artículo examina uno de esos para Python.
Lea más en http://www.devshed.com/c/a/Python/Python-for-PDF-Generation/#whoCFCPh3TAks368.99
Sugiero Pdfkit .
Crea pdf de archivos html. Lo elegí para crear pdf en 2 pasos desde mi pila Pyramid Pyramid:
- Renderizado del lado del servidor con plantillas de mako con el estilo y el marcado que desea para usted Documento PDF
- Ejecutar el
pdfkit.from_string(...)
pasando el html representado como parámetro
De esta forma obtienes un documento en PDF con estilo e imágenes compatibles.
Puedes instalarlo de la siguiente manera:
usando pip
pip install pdfkit
- También necesitarás instalar wkhtmltopdf ( en Ubuntu ).
fpdf es python (también). Y a menudo usado. Ver la búsqueda PyPI / pip. Pero tal vez fue renombrado de pyfpdf a fpdf. Desde características: soporte PNG, GIF y JPG (incluida la transparencia y el canal alfa)
fpdf funciona bien para mí. Mucho más simple que ReportLab y realmente gratis. Funciona con UTF-8.
rinohtype admite incrustación de imágenes PDF, PNG y JPEG (de forma nativa) y otros formatos de mapa de bits (cuando Pillow está instalado).
(Descripción completa: soy el autor de rinohtype)