Image in PDF

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hallo,
in meinem code scheint alles richtig, aber es wird nicht das eigentliche image angezeigt, sonder nur:
<PIL.PngImagePlugin.PngImageFile image mode=RGB size=80x80 at 0x8AF7AF0>
woran liegt das?

Code: Alles auswählen

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, cm,landscape
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Paragraph, Table, TableStyle, Image
from reportlab.lib.enums import TA_LEFT, TA_CENTER
from reportlab.lib import colors
from reportlab.lib.units import inch
import os
from PIL import Image, ImageTk
import PIL

#Bild laden
desktopFile = os.path.expanduser("~\Desktop")
folderpath = desktopFile+'\\QR-Codes'
imageName = "QR-Code.png"
filename = folderpath+"\\"+imageName

#Pdf-Doc speichern
pdf_Name = "Test PDF"
pdf_Document = desktopFile+'\\'+str(pdf_Name.encode("utf-8"))+".pdf"
file = pdf_Document.decode("utf-8")

try:
    os.makedirs(folderpath)
except:
    pass

a = Image.open(filename)
a.drawHeight = 2*inch
a.drawWidth = 2*inch
data=[['1',a],['3','4']]

c = canvas.Canvas(file, pagesize=landscape(A4))
table = Table(data, colWidths=200, rowHeights=50)
table.setStyle(TableStyle([
                           ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
                           ('BOX', (0,0), (-1,-1), 0.25, colors.black),
                           ('BACKGROUND',(0,0),(-1,2),colors.lightgrey)
                           ]))
table.wrapOn(c, 200, 400)
table.drawOn(c,20,50)
c.save()
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

weil du nur das Objekt `a` auf den Canvas zeichnest. Damit ReportLab es aber auch wirklich als Bild einfügt, muss du die Canvasmethode `drawImage` oder `drawInlineImage` einfügen. Siehe auch Seite 14 des ReportLab User Guides.

Abgesehen davon: du importierst diverse Sachen aus Platypus, nutzt sie aber nicht. Du zeichnest auf den "nackten" Canvas. Kann man machen, mit Platypus ist es aber wesentlich komfortabler, weil du auf einem höheren Level arbeitest.

Gruß, noisefloor
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

fuck ja, dankeschön... :)
Antworten