Crear un PDF on the FLY con Reportlab
Código mínimo para crear un pdf(una foto y un texto) on the fly desde python usando reportlab
Requiere las librerías PIL y ReportLab
from PIL import Image
from reportlab.pdfgen import canvas #importamos el canvas para poder crear una página simple
im = Image.open("path a la imagen")
box = [0,0,100,100] #recuadro de dimensionamiento de la imagen
im2 = im.crop(box) #recorte de la imagen en base al dimensionamiento anterior
def hello(c):
c.drawString(100,100,"Hello World") #método de escritura de un string en una posición determinada
c.drawInlineImage(im2, 200, 200) #métode para dibujar una imagen en una posición determinada
c = canvas.Canvas("ruta/ficheroacrear.pdf") #creem el pdf mediante el canvas
hello(c) #añadimos el contenido al pdf
c.showPage() #cerramos la página
c.save() #guardamos
Características básicas de reportlab:
• Motor de posicionamiento de componentes en documentos (Platypus)
• Objetos fluidos tales como párrafos, títulos, tablas, imágenes, gráficos, etc.
• Fuentes Type-1
• Imágenes Bitmap y gráficos vectoriales
• Crear documentos portables profesionales
• Biblioteca de shapes reutilizables
• Utiliza Python, un lenguaje Orientado a Objetos limpio
• Tiene en cuenta cualquier fuente de datos
• Código fuente completamente disponible
• Plataforma-independiente
• Incluye PythonPoint - Herramienta de Presentación de PDFs
Existe una posibilidad mucho más sencilla para crear pdf on the fly desde zope : HTML2PDF.
http://www.zope.org/Members/mjablonski/howtoPDF
Reportlab es necesario si necesitas más control sobre la maquetación y especificaciones del pdf.
http://www.reportlab.org/
from PIL import Image
from reportlab.pdfgen import canvas #importamos el canvas para poder crear una página simple
im = Image.open("path a la imagen")
box = [0,0,100,100] #recuadro de dimensionamiento de la imagen
im2 = im.crop(box) #recorte de la imagen en base al dimensionamiento anterior
def hello(c):
c.drawString(100,100,"Hello World") #método de escritura de un string en una posición determinada
c.drawInlineImage(im2, 200, 200) #métode para dibujar una imagen en una posición determinada
c = canvas.Canvas("ruta/ficheroacrear.pdf") #creem el pdf mediante el canvas
hello(c) #añadimos el contenido al pdf
c.showPage() #cerramos la página
c.save() #guardamos
Características básicas de reportlab:
• Motor de posicionamiento de componentes en documentos (Platypus)
• Objetos fluidos tales como párrafos, títulos, tablas, imágenes, gráficos, etc.
• Fuentes Type-1
• Imágenes Bitmap y gráficos vectoriales
• Crear documentos portables profesionales
• Biblioteca de shapes reutilizables
• Utiliza Python, un lenguaje Orientado a Objetos limpio
• Tiene en cuenta cualquier fuente de datos
• Código fuente completamente disponible
• Plataforma-independiente
• Incluye PythonPoint - Herramienta de Presentación de PDFs
Existe una posibilidad mucho más sencilla para crear pdf on the fly desde zope : HTML2PDF.
http://www.zope.org/Members/mjablonski/howtoPDF
Reportlab es necesario si necesitas más control sobre la maquetación y especificaciones del pdf.
http://www.reportlab.org/