CodeGym /Curso de Java /Python SELF ES /Estilización de texto y encabezados en documentos PDF con...

Estilización de texto y encabezados en documentos PDF con ReportLab

Python SELF ES
Nivel 44 , Lección 3
Disponible

1. Fundamentos para añadir texto y encabezados en PDF

En ReportLab el texto se añade usando el objeto canvas, que proporciona métodos para definir fuentes, colores, tamaños y posiciones del texto.

Creación de un PDF simple con encabezado y texto

Python

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4

# Creación de un nuevo PDF
pdf_file = canvas.Canvas("styled_text.pdf", pagesize=A4)
width, height = A4

# Añadiendo el encabezado
pdf_file.setFont("Helvetica-Bold", 20)
pdf_file.drawString(100, height - 100, "Informe de ventas")

# Añadiendo el texto principal
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Este documento contiene información sobre las ventas del último trimestre.")

# Guardar el PDF
pdf_file.save()

Este código crea un archivo PDF que contiene un encabezado y texto principal. Definimos la fuente y el tamaño del texto usando el método setFont().

2. Estilización y formato del texto

En ReportLab puedes cambiar colores, fuentes y tamaños del texto, creando encabezados y contenido principal estilizados. Esto ayuda a estructurar el documento y hacerlo más fácil de leer.

Cambiar la fuente y tamaño del texto

ReportLab soporta fuentes estándar como Helvetica, Times-Roman y Courier. Puedes definir el estilo de la fuente (normal, negrita o cursiva) y el tamaño usando setFont().

Python

pdf_file.setFont("Helvetica-Bold", 18)  # Encabezado en negrita
pdf_file.drawString(100, height - 50, "Encabezado principal")

pdf_file.setFont("Helvetica-Oblique", 14)  # Subtítulo en cursiva
pdf_file.drawString(100, height - 80, "Subtítulo: Resumen del trimestre")

Cambiar el color del texto

Puedes cambiar el color del texto usando el método setFillColorRGB(), que acepta valores RGB de 0 a 1.

Python

pdf_file.setFillColorRGB(0.2, 0.4, 0.6)  # Color azul
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 110, "Este texto tiene color azul.")

También se pueden usar colores predefinidos de reportlab.lib.colors.

Python

from reportlab.lib import colors

pdf_file.setFillColor(colors.red)
pdf_file.drawString(100, height - 140, "Texto rojo")

3. Alineación y texto multi-línea

Si el texto es largo, es mejor presentarlo en formato multi-línea. ReportLab proporciona la clase TextObject, que soporta la división automática de líneas.

Texto multi-línea con TextObject

Python

text = """
El informe contiene un análisis de las ventas de los últimos tres meses.
Analizamos los cambios y su impacto en el crecimiento general de la empresa.
"""

text_object = pdf_file.beginText(100, height - 180)
text_object.setFont("Helvetica", 12)
text_object.setFillColor(colors.darkblue)

for line in text.split("\n"):
    text_object.textLine(line)

pdf_file.drawText(text_object)

Este código crea un bloque de texto con múltiples líneas, cada línea se añade al PDF. Usar TextObject es útil para texto largo, ya que asegura un formato automático.

4. Usar párrafos para estilizar texto

La clase Paragraph del módulo reportlab.platypus permite añadir texto estilizado con soporte para etiquetas HTML como <b>, <i> y <u>. Paragraph también soporta alineación y márgenes, lo que lo hace perfecto para crear texto formateado.

Creación de párrafos con Paragraph

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import SimpleDocTemplate, Paragraph

# Configuración del PDF
doc = SimpleDocTemplate("styled_paragraphs.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []

# Creación de un párrafo con texto en negrita y cursiva
text = "Informe de ventas
Informe trimestral del año 2023" paragraph = Paragraph(text, styles["Title"]) elements.append(paragraph) # Añadiendo el texto principal main_text = """ Este informe contiene datos clave sobre las ventas del último trimestre, así como un análisis del impacto de las ventas en los ingresos generales de la empresa. """ paragraph = Paragraph(main_text, styles["BodyText"]) elements.append(paragraph) # Construcción del PDF doc.build(elements)

Aquí usamos Paragraph para añadir texto formateado que incluye etiquetas HTML para estilización (texto en negrita y cursiva). getSampleStyleSheet() proporciona estilos básicos como Title y BodyText, que pueden ser modificados.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION