enero 31, 2014

ReportLab: pdfgen - Lo básico de Canvas (01)

PDFGEN es la interfaz más baja para generar PDF. Son secuencias de instrucciones para pintar un documento sobre una secuencia de páginas. El objeto que provee tal operación de pintado es el pdfgen canvas.

El canvas debe ser considerado como un papel con coordenadas x, y cuyo punto de origen es la esquina inferior izquierda. Se incrementa a la derecha y hacia arriba.



Hay que tener en cuenta que ReportLab tiene tres formas de uso (APIs): Canvas, Platypus, y Drawing.
Canvas te permitira dibujarlo todo en la hoja, Platypus va más enfocado en la producción de texto, separando el formato del contenido (algo similar a html y css), Drawing te permitirá crear gráficos un poco más avanzados, como los estadísticos.

Veamos un ejemplo básico:
import os

# Importamos Librería a usar
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4  # Puede ser también Letter, A5, A6, ...

#A4 es una tupla, podemos extraer sus valores
#ancho, alto = A4 como también de la siguiente forma
anchoHoja = A4[0]
altoHoja = A4[1]
print anchoHoja, altoHoja

#Creamos el contexto de Canvas
#- Creamos el nombre del archivo 
#- pagesize es una tupla, por eso le pasamos A4 de lib
c=canvas.Canvas("test.pdf", pagesize = A4)

#Escribimos en la primera hoja
#drawString(x,y, texto)
c.drawString(50,500, " Mi PRIMER PDF")
c.drawString(250,300,"Coordenada=(250,300) ")
c.drawString(350,200,"(350, 10)")
c.drawString(150,400,"Aprendiendo REPORTLAB")

#Grabamos la página presente del canvas
c.showPage()  

#Escribimos en la segunda hoja
c.drawString(50,500, "Segunda Hoja")
c.showPage()

#Archivamos y cerramos el canvas
c.save()  

#Lanzamos el pdf creado
os.system("test.pdf")

1 comentario:

  1. El Letter no lo reconoce. Es el default?,.. o como lo hago para el Letter?

    ResponderEliminar