febrero 13, 2014

ReportLab. Platypus - Flowables (10)

Ya vimos en temas anteriores el nivel más bajo de todos, el pdfgen.canvas. Ahora veremos las capas superiores, que en su conjunto serán usadas por Platypus.

El Flowables es una clase abstracta para cosas que pueden ser dibujadas; por ejemplo: los párrafos y las tablas. Usa métodos como:

- Flowable.drawOn(canvas, x, y) Envía el flowable a un canvas en particular. Maneja el traslado de las coordenadas del canvas (x,y) , de manera que dicho canvas pueda dibujar el flowable en un frame de coordenadas absolutas.

- Flowable.wrap(width, height) Calcula el espacio que usará el flowable.


# -*- coding:utf-8 -*-
import os
from reportlab.platypus import Paragraph
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.pagesizes import A4

hojaEstilo = getSampleStyleSheet()
estilo = hojaEstilo['BodyText']

P=Paragraph('Un pequeño ejemplo', estilo)

c = Canvas('test.pdf')

#Supongamos que nuestro frame sea el tamaño de la hoja A4
PAGE_WIDTH = A4[0]
PAGE_HEIGHT = A4[1]

#El párrafo tiene un ancho y un alto respectivo, por lo tanto el método wrap
#calculará el espacio que realmente se requiere para reajustar el Flowable, 
#en este caso el párrafo.
w, h = P.wrap(PAGE_WIDTH, PAGE_HEIGHT)   
print w, h
#Hay que tener en cuenta que el ancho del párrafo se extiende por el ancho de
#la página.

#Especificamos en que altura del eje Y se ubicará el párrafo   
UbicacionParrafo= PAGE_HEIGHT - h
#Mandamos el Flowable(el párrafo), al canvas.
P.drawOn(c, 0, UbicacionParrafo)

c.save()

os.system("test.pdf")

No hay comentarios:

Publicar un comentario