I am receiving an error somewhere in the following code. I have triple checked my file paths and I believe they are correct. I am following a quite dated tutorial, so I double checked the docs and it seems correct.
Code:
# Import data cleaning packages.
import csv
# Import pdf filling packages.
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.pagesizes import landscape
from reportlab.platypus import Image
data_file = '/Users/josephnardone/Desktop/python/data.csv'
def import_data(data_file):
attendee_data = csv.reader(open(data_file,'rb'))
for row in attendee_data:
last_name = row[0]
first_name = row[1]
pdf_file_name = last_name + '_' + first_name + '.pdf'
generate_certificate(first_name, last_name, pdf_file_name)
def generate_certificate(first_name, last_name, pdf_file_name):
attendee_name = first_name + ' ' + last_name
c = canvas.Canvas(pdf_file_name, pagesize = landscape(letter))
# PDF Header Text
c.setFont('Helvetica', 30, leading = None)
c.drawCenteredString(415, 500, 'Invitation to My Party')
c.setFont('Helvetica',15, leading = None)
c.drawCenteredString(415, 450, attendee_name)
c.showPage()
c.save()
import_data(data_file)
Error:
Traceback (most recent call last):
File "/Users/josephnardone/Desktop/python/pdf_gen.py", line 36, in <module>
import_data(data_file)
File "/Users/josephnardone/Desktop/python/pdf_gen.py", line 19, in import_data
generate_certificate(first_name, last_name, pdf_file_name)
File "/Users/josephnardone/Desktop/python/pdf_gen.py", line 27, in generate_certificate
c.drawCenteredString(415, 500, 'Invitation to My Party')
AttributeError: Canvas instance has no attribute 'drawCenteredString'
[Finished in 0.2s]
Error in tutorial found. Problem solved, double def of generate_certificate, see solution below:
def import_data(data_file):
attendee_data = csv.reader(open(data_file,'rb'))
for row in attendee_data:
last_name = row[0]
first_name = row[1]
pdf_file_name = last_name + '_' + first_name + '.pdf'
def generate_certificate(first_name, last_name, pdf_file_name):
attendee_name = first_name + ' ' + last_name
c = canvas.Canvas(pdf_file_name, pagesize = landscape(letter))