Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Saltos de línea reportLab
#2
Hola, ¿cómo estás?

Si estás usando la función drawString() como explica el artículo Crear documentos PDF en Python con ReportLab, efectivamente no se pueden crear saltos de línea. La única forma es dividir manualmente el texto en líneas y por cada una de ellas hacer una llamada a drawString().

El tema es que ReportLab es una librería gigantesca y ese artículo solamente explica una API básica y de muy bajo nivel, aunque en muchos casos suficiente. La forma más sencilla de dibujar textos con saltos de línea es usando reportlab.platypus.Paragraph. Ejemplo:

  1. from reportlab.lib.pagesizes import A4
  2. from reportlab.lib.styles import ParagraphStyle
  3. from reportlab.platypus import SimpleDocTemplate
  4. from reportlab.platypus import Paragraph
  5.  
  6. doc = SimpleDocTemplate(
  7. "hola-mundo.pdf",
  8. pagesize=A4
  9. )
  10. paragraph = Paragraph(
  11. "Hola mundo.<br />Esto aparece en otra línea.",
  12. ParagraphStyle(
  13. "ps1",
  14. fontName="Times-Roman",
  15. fontSize=11
  16. )
  17. )
  18. doc.build([paragraph])


En un Paragraph, como en HTML, los saltos de línea se representan vía <br />.

Si ya tenés el texto en una variable con los saltos de línea incluidos, podés hacer simplemente:

  1. paragraph = Paragraph(
  2. texto.replace("\n", "<br />"),
  3. ParagraphStyle(
  4. "ps1",
  5. fontName="Times-Roman",
  6. fontSize=11
  7. )
  8. )


Saludos!
Responder


Mensajes en este tema
Saltos de línea reportLab - por Myszowor - 18-03-2020, 10:14 AM
RE: Saltos de línea reportLab - por Francisco - 18-03-2020, 08:17 PM
RE: Saltos de línea reportLab - por Myszowor - 19-03-2020, 08:52 AM
RE: Saltos de línea reportLab - por Francisco - 19-03-2020, 07:58 PM
RE: Saltos de línea reportLab - por Myszowor - 21-03-2020, 09:42 AM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)