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) 

schreiben Wann immer ich bin AufrufBild kann nicht in PDF-Datei

docket.logo_para() 

Ich bin Fehler immer cannot concatenate 'str' and 'int' objects bei self.doc.build(self.elements)

Wenn die Leitung docket.logo_para() kommentiert wird, funktioniert der Code hervorragend.

Ich versuche, ein Bild auf der PDF-Datei mit SimpleDocTemplate

EDIT 1

Schaffung neuer 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 = [] 

schriftlich pdf

def write_pdf(self): 

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

Können Sie genauer darüber sein, was die doc.build-Methode tut? Es scheint, dass der Fehler außerhalb des eingefügten Codes auftritt. – Crolle

+0

@Crolle Bitte überprüfen Sie die Bearbeitung. Ich schreibe gerade die Daten auf pdf – onkar

+1

Haben die Aufgabe erfüllt. Dieses Problem wurde mithilfe dieses Ansatzes behoben (http://stackoverflow.com/questions/36147118/unable-to-open-image/36171071#36171071). – onkar

Antwort

0

Ist hinzufügen Es ist möglich, dass ein gewisser Wert s in self.elements sind ganze Zahlen? Ich würde vorschlagen, dies in diesem Fall zu versuchen:

def write_pdf(self): 

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

Das gibt mir '' str 'Objekt hat kein Attribut' getKeepWithNext ' ' – onkar