I'm trying to draw strings on a jpg image and make it pdf with reportlab. When i'm doing it like this it works:
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import landscape, A4, letter
from reportlab.lib.units import cm, inch
file = 'test.pdf'
name = 'Nita Alexandru Stefan'
year = '1993'
c = canvas.Canvas(file, pagesize=landscape(letter))
c.drawImage('cert.jpg', 0*cm, 0*cm, 29*cm, 22*cm)
c.setFont("Times-Roman", 12)
c.setFillColorRGB(0.2578125, 0.2265625, 0.23046875)
c.drawString(500, 374, name)
c.drawString(429, 359, year)
c.showPage()
c.save()
I want to make a function and use dict.get(), when i'm trying this it doesn't generate anything:
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import landscape, A4, letter
from reportlab.lib.units import cm, inch
data = dict(name='Nita Alexandru Stefan', year='1993')
def generate_pdf(data, canvas):
file = 'test.pdf'
c = canvas.Canvas(file, pagesize=landscape(letter))
c.drawImage('cert.jpg', 0*cm, 0*cm, 29*cm, 22*cm)
c.setFont("Times-Roman", 12)
c.setFillColorRGB(0.2578125, 0.2265625, 0.23046875)
c.drawString(500, 374, data.get('name', ""))
c.drawString(429, 359, data.get('year', ""))
c.showPage()
c.save()
Any ideea why it's not generating anything, nor changing the file created before?
It seems you are not calling the generate_pdf function
Call :
generate_pdf(data, canvas)
after the function generate_pdf
ends
like:
def generate_pdf(data, canvas):
file = 'test.pdf'
c = canvas.Canvas(file, pagesize=landscape(letter))
c.drawImage('cert.jpg', 0*cm, 0*cm, 29*cm, 22*cm)
c.setFont("Times-Roman", 12)
c.setFillColorRGB(0.2578125, 0.2265625, 0.23046875)
c.drawString(500, 374, data.get('name', ""))
c.drawString(429, 359, data.get('year', ""))
c.showPage()
c.save()
generate_pdf(data, canvas)