Saltar al contenido

Cómo agregar texto en negrita y normal en una línea usando el método drawString en reportlab (python)

Ya no necesitas investigar más por todo internet ya que has llegado al sitio exacto, poseemos la respuesta que quieres y sin complicarte.

Solución:

Podrías usar el setFont metodo de la canvas objeto, para establecer la fuente en Bold cuando sea necesario, y Normal de lo contrario.

* ACTUALIZAR *

Para calcular el valor correcto de xpuedes usar el stringWidth método, que calcula la longitud de la string dado su contenido, el nombre de la fuente y el tamaño de la fuente. Tendrás que importarlo desde reportlab.pdfbase.pdfmetrics:

[...]
from reportlab.pdfbase.pdfmetrics import stringWidth
[...]

# student name variable.
student_name = 'Alex'

# Content.
line1 = " is working on college project."
line2 = "Reportlab is very good lib, "
line3 = " liked it"

# drawString location calculation.
x = 0
y = 8.5 * 72

# First string.
can.setFont('Helvetica-Bold', 8)
can.drawString(x, y, student_name)
can.setFont('Helvetica', 8)
textWidth = stringWidth(student_name, 'Helvetica-Bold', 8) 
x += textWidth + 1
can.drawString(x, y, line1)

y = y - 72

# Second String.
x = 0
can.setFont('Helvetica', 8)
can.drawString(x, y, line2)
textWidth = stringWidth(line2, 'Helvetica', 8) 
x += textWidth + 1
can.setFont('Helvetica-Bold', 8)
can.drawString(x, y, student_name)
textWidth = stringWidth(student_name, 'Helvetica-Bold', 8) 
x += textWidth + 1
can.setFont('Helvetica', 8)
can.drawString(x, y, line3)

# Create PDF.
can.save()

O podrías echar un vistazo a ParagraphStyle y Paragraph (from reportlab.lib.styles import ParagraphStyle, from reportlab.platypus import Paragraph) pero no estoy seguro si se pueden concatenar dos estilos diferentes en el mismo string.

Te invitamos a añadir valor a nuestro contenido informacional cooperando tu veteranía en las referencias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *