Python reportlab einfügen, Bild in Tabelle
In der reportlab Bedienungsanleitung (page79), dies ist, wie die Bilder in die Tabelle eingefügt werden.
I = Image('../images/replogo.gif')
I.drawHeight = 1.25*inch*I.drawHeight / I.drawWidth
I.drawWidth = 1.25*inch
P0 = Paragraph('''
<b>A pa<font color=red>r</font>a<i>graph</i></b>
<super><font color=yellow>1</font></super>''',
styleSheet["BodyText"])
P = Paragraph('''
<para align=center spaceb=3>The <b>ReportLab Left
<font color=red>Logo</font></b>
Image</para>''',
styleSheet["BodyText"])
data= [['A', 'B', 'C', P0, 'D'],
['00', '01', '02', [I,P], '04'],
['10', '11', '12', [P,I], '14'],
['20', '21', '22', '23', '24'],
['30', '31', '32', '33', '34']]
t=Table(data,style=[('GRID',(1,1),(-2,-2),1,colors.green),
('BOX',(0,0),(1,-1),2,colors.red),
('LINEABOVE',(1,2),(-2,2),1,colors.blue),
('LINEBEFORE',(2,1),(2,-2),1,colors.pink),
('BACKGROUND', (0, 0), (0, 1), colors.pink),
('BACKGROUND', (1, 1), (1, 2), colors.lavender),
('BACKGROUND', (2, 2), (2, 3), colors.orange),
('BOX',(0,0),(-1,-1),2,colors.black),
('GRID',(0,0),(-1,-1),0.5,colors.black),
('VALIGN',(3,0),(3,0),'BOTTOM'),
('BACKGROUND',(3,0),(3,0),colors.limegreen),
('BACKGROUND',(3,1),(3,1),colors.khaki),
('ALIGN',(3,1),(3,1),'CENTER'),
('BACKGROUND',(3,2),(3,2),colors.beige),
('ALIGN',(3,2),(3,2),'LEFT'),
])
Also basierend auf den oben genannten user guide, ich gehe davon aus, dass das einfügen von Bildern in Tabellen, alles, was ich tun müssen, ist importieren Bild mit PIL, Bild, Modul , Bild laden und verwenden Sie es als Daten für die Tabelle.
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
from reportlab.lib.enums import TA_LEFT, TA_CENTER
from reportlab.lib import colors
from PIL import Image as im
a=im.open("temp.jpg")
data=[['1',a],['3','4']]
c = canvas.Canvas("Reportlabtest.pdf", 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()
Aber anstelle von einfügen das Bild in der Tabelle, ich hatte diese Meldung erstellt die pdf-Datei "PIL.Jpegimageplugin.JPEGImageFile Modus=RGB-Größe=200x200 bei 0x179B1E8"
Was das problem sein könnte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Bild des ReportLab für image-Zwecke anstelle von PIL.. hoffe es hilft dir. Ich veränderte den code unten.
open()
existiert nicht mehr im Jahr 2018. Haben Sie zum senden der Parameter an den Konstruktor.Image("path/to/temp.jpg", 2*inch, 2*inch)
Sind Sie nicht Einstellung der
drawHeight
&drawWidth
im code.drawHeight
unddrawWidth
verpflichtend? Auch nach ich habe diese 2 Zeilen, ich bin immer noch mit dem gleichen Problem.