febrero 13, 2014

ReportLab: Platypus - Frames (11)

Los Frames son contenedores activos, quienes a su vez son contenidos en un PageTemplates. Tienen una localización y tamañon, manteniendo el concepto de espacio dibujable restante.

Frame (x1, y1, ancho, alto, leftPadding=6, bottomPadding=6, rightPadding=6, topPadding=6, id=None, showBoundary=0)

El comando anterior, crear una instancia del Frame con cordenadas x,y que son relativas a la página en uso. Los Padding reducen espacio para dibujar. El id, sirve como un identificador (ej: 'ColumnaDerecha'). Si el showBoundary es distinto de cero, se mostrará las fronteras del frame en tiempo de ejecución.

- Frame.addFromList(drawList, canvas) Añade la lista de flowables
- Frame.split(flowable, canvas) Devuelve una lista de flowables
- Frame.drawBoundary(canvas) Dibuja el marco del Frame


Veamos el ejemplo:

import os

#Cargamos los módulos que necesitamos.

from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.units import inch
from reportlab.platypus import Paragraph, Frame
from reportlab.platypus import Image
from reportlab.platypus import Spacer

#Creamos objeto Canvas.
c = Canvas('test.pdf')

#Estilo de la hoja.
estiloHoja = getSampleStyleSheet()

#Demás estilos.
estiloN = estiloHoja['Normal']
estiloH = estiloHoja['BodyText']

#Inicializamos platypus story.
story = []

#Añadimos algunos flowables.
imagen_logo = Image("Tux2.png", width=150, height=200)
story.append(imagen_logo)

#Dejamos espacio.
story.append(Spacer(0,20))

#Añadimos un párrafo.
story.append(Paragraph("Esto es un ejemplo de frame 01",estiloN))

#Definimos un frame.
frame = Frame(3, 3, 200, 260, showBoundary=1)
frame.addFromList(story, c)

#Inicializamos platypus story.
story2 = []

#Añadimos algunos flowables.
story2.append(Paragraph("Este es el párrafo del segundo Frame",estiloH))

#Dejamos espacio.
story2.append(Spacer(0,20))

#~ #Una imagen.
imagen_logo = Image("imagen.jpg", width=100, height=100)
story2.append(imagen_logo)

#Definimos otro frame.
frame2 = Frame(250, 3, 250, 250, 6, showBoundary=1)
frame2.addFromList(story2, c)

#Salvamos el PDF.
c.save()

os.system("test.pdf")

No hay comentarios:

Publicar un comentario