Notas sobre flask
Flask Instalación y puesta en marcha de Flask En primer lugar creamos una carpeta, por ejemplo, flask1. A continuación, desde la Terminal, creamos un …
Reportlab te permite crear documentos PDF desde Python. De código abierto, constituye una amplia librería con infinidad de utilidades.
pip install reportlab
https://hg.reportlab.com/hg-public/
Permite generar documentos PDF directamente desde Python. Dispone de un lenguaje de plantillas llamado RML
Documentación: https://www.reportlab.com/dev/docs/
from reportlab.pdfgen import canvas
c = canvas.Canvas("hola-mundo.pdf")
c.drawString(50, 50, "¡Hola, mundo!")
c.save()
Esto da como resultado un pdf con el texto de “¡Hola Mundo!” en la parte inferior izquierda de la página.
El origen de coordenadas (0,0) se encuentra en el extremo inferior izquierdo.
El ancho y alto de la página, por defecto, son las correspondientes a un A4.
Se puede establecer, al crear la instancia del canvas, la dimensión de cada una de las hojas, mediante el parámetro pagesize, que es una tupla (width, height).
# línea
c.line(x1, y1, x2, y2)
# rectángulo
c.rectangle(x, y, width, height)
# rectángulo con esquinas redondeadas
c.roundRect(x, y, width, height,radio)
# círculo
c.circle(x,y,radio)
# elipse
c.ellipse(x1, y1, x2, y2)
# RGB entre 0.0 y 1.0.
c.setFillColorRGB(1, 0, 0)
c.drawString(x, y, "Texto en rojo")
c.rect(x1, y1, x2, y2, fill=True)
# color del borde
c.setStrokeColorRGB(0.7, 0, 0.7)
El método _drawString() está bien para dibujar alguna palabra, pero si se trata de textos más extensos no sirve, puesto que no acepta saltos de línea. Para estos casos se utiliza drawText()
# En primer lugar: crear objeto y posicionarlo:
t = c.beginText(200,200)
# Estilos, si procede:
text.setFont("Courier", 10)
# con el método textLine añadimos líneas de texto al objeto
t.textLine = ("Línea 1")
t.textLine = ("Línea 2")
# o así:
t.textLines("Línea1\nLínea 2\nLínea3")
# para dibujar:
c.drawText(t)
# png, jpg, gif
c.drawImage("imagen.jpg", x, y)
# establecer ancho y alto
c.drawImage("imagen.jpg", x, y, width=50, height=50)
# Ejemplo que posiciona una imagen en la esquina superior izquierda:
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.lib.utils import ImageReader
c = canvas.Canvas("posicionar-imagen.pdf", pagesize=A4)
w, h = A4
# Ancho y alto de la imagen.
img = ImageReader("imagen.jpg")
img_w, img_h = img.getSize()
# h - img_h es el alto de la hoja menos el alto de la imagen.
c.drawImage(img, 0, h - img_h)
c.save()
xlist = [10, 60, 110, 160]
ylist = [h - 10, h - 60, h - 110, h - 160]
c.grid(xlist, ylist)
Con el kit de herramientas de ReportLab se pueden realizar formularios interactivos y rellenables.
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
w, h = A4
x = 0
y = 0
def createCheckBox():
x = w/2
y = h - 20
c = canvas.Canvas("checkbox.pdf")
c.setFont("Courier", 12)
c.drawCentredString(x, y,"CHECKBOXES CON PYTHON")
y -= 20
x = 10
c.setFont("Courier", 9)
form = c.acroForm
c.drawString(x, y, "Lbl circle")
form.checkbox(
name='cb1',
tooltip='Checkbox 1',
x = x + 60,
y = y - 5,
size= 15,
borderWidth=1,
forceBorder=True,
buttonStyle='circle'
)
c.save()
if __name__ == "__main__":
createCheckBox()
Flask Instalación y puesta en marcha de Flask En primer lugar creamos una carpeta, por ejemplo, flask1. A continuación, desde la Terminal, creamos un …
tkinter Enlace a la documentación de tkinter. Ventana básica con tkinter Mostrar código fuente from tkinter import * class Window(): def …