Veamos el siguiente código que lo explica (se usa un archivo llamado lorem.txt, que contiene un párrafo de Lorem Ipsum:
# -*- coding:utf-8 -*-
import os
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
c=canvas.Canvas("test.pdf", pagesize = A4)
#FUENTES EN CANVAS
#-----------------
texto = "Lorem ipsum dolor sit amet"
x, y = 150, 710
for fuente in c.getAvailableFonts(): # Lista disponible de fuentes
c.setFont(fuente, 10) # Cambiamos la fuente y el tamaño
c.drawString(x, y, texto)
c.setFont("Helvetica", 12)
c.drawRightString(x-10, y, fuente + ":")
y -= 20
#TRABAJANDO CON OBJETO DE TEXTO
#-------------------------------
# Indispensable para textos de varias lineas, ya que el método drawString
# no podrá dibujar múltiples líneas:
textoArchivo = open("lorem.txt", "r") # Abrimos un archivo de texto
texto = """Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumyeirmod tempor invidunt ut labore et dolore magna
aliquyam erat, sed diamvoluptua. At vero eos et accusam et justo duo dolores
et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet.Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumyeirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diamvoluptua. At vero eos et accusam et justo duo dolores et ea reb"""
textobject = c.beginText() # Iniciamos el textobject
textobject.setTextOrigin(20, 400) # Ubicamos el cursor donde dibujar
textobject.setFont("Helvetica-Oblique", 13)
for i in textoArchivo:
i = i.replace("\n","") # Remplazamos el salto de linea
textobject.setCharSpace(0.5) # Espacio entre caracteres
textobject.setWordSpace(1) # Espacio entre palabras
textobject.textLine(i) # Dibujamos la linea
textobject.moveCursor(5, 10) # Movemos el cursor para luego escribir
textobject.setFillGray(0.4) # Rellenamos con Escala de grises
textobject.setLeading(20) # Espaciado entre lineas
textobject.textLines(texto) # Insertamos el texto y con color gris
c.drawText(textobject) # Dibujamos el texto pasando un objeto de texto
c.showPage()
c.save()
os.system("test.pdf")

si el texto simplemente es largo y no tiene saltos (es decir solo una linea) que se puede hacer en ese caso para que una cierta cantidad de caractares salte una linea?
ResponderEliminar