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 x
puedes 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.