2016-03-21 2 views
1
def logo_para(self): 
    exp = Paragraph(
     '<b>Express</b>', self.styles['CenterHeading']) 
    csheet = Paragraph(
     '<b>PDF SHEET</b>', self.styles['CenterHeading']) 

    img_location = "https://www.google.co.in/logos/doodles/2016/icc-australia-v-bangladesh-5759441086447616-res.png" 

    img_data = ''' 
     <para><img src="%s" width="300" height="90"/><br/> 
     </para>''' % img_location 
    img = Paragraph(img_data, self.styles['CenterHeading']) 
    data = [[exp], [csheet], [''], [img] ] 
    main_header_table = Table([['', img, '']], colWidths=(100, 300, 100)) 
    main_header_table.setStyle(TableStyle([ 
     ('ALIGN', (0, 0), (-1, -1), 'CENTER'), 
     ('BOX', (0, 0), (-1, -1), 0.25, colors.black) 
    ])) 
    self.elements.append(main_header_table) 

Если когда-нибудь я звонюНевозможно записать изображение в файл PDF

docket.logo_para() 

Я получаю ошибку cannot concatenate 'str' and 'int' objects в self.doc.build(self.elements)

Когда линия комментируется docket.logo_para(), код работает великолепно.

Я пытаюсь добавить изображение на файл PDF с помощью SimpleDocTemplate

EDIT 1

создание нового PDF

class PDFDocketGenerator(object): 
def __init__(self, file_name): 
    self.filename = file_name 
    self.filepath = STATIC_URL + 'uploads/billing/' + file_name 
    self.path_to_save = FILE_UPLOAD_TEMP_DIR + '/billing/' + file_name 
    # define the pdf object 
    self.doc = SimpleDocTemplate(
     self.path_to_save, pagesize=landscape(A4), topMargin=50, bottomMargin=30, 
     leftMargin=60, rightMargin=60) 
    self.elements = [] 

запись в формате PDF

def write_pdf(self): 

     self.doc.build(self.elements) 
+0

Можете ли вы более подробно узнать, что делает метод doc.build? Похоже, что ошибка происходит за пределами кода, который вы вставили. – Crolle

+0

@Crolle Проверьте изменения. Я просто пишу данные по pdf – onkar

+1

Выполнили эту задачу. Решил эту проблему, используя [этот подход] (http://stackoverflow.com/questions/36147118/unable-to-open-image/36171071#36171071). – onkar

ответ

0

ли возможно, что некоторая ценность s в self.elements являются целыми числами? Я бы предложил попробовать в этом случае:

def write_pdf(self): 

    self.doc.build([str(e) for e in self.elements]) 
+0

Это дает мне объект ''str' не имеет атрибута 'getKeepWithNext' ' – onkar