2017-10-11 9 views
0

다음 코드의 어딘가에 오류가 발생합니다. 트리플을 사용하여 파일 경로를 검사했으며 올바른 것으로 믿습니다. 나는 꽤 날짜가 지난 튜토리얼을 따르고 있으므로 문서를 두 번 확인 했으므로 올바른 것으로 보인다.Python Reportlab pdfgen Canvas 아니오 속성

코드 :

# 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) 

오류 : 발견 튜토리얼

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] 

답변

0

오류가 발생했습니다. 문제가 해결되었습니다. generate_certificate의 이중 정의입니다. 아래 솔루션을 참조하십시오.

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))