In the reportlab manual, user manual (page 79), this is how images are inserted into the table.
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'), ])
Therefore, based on the above user guide, I assume that to insert images into tables, all I need to do is import the image using PIL, the image module, load the image and use it as data for the table.
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()
But instead of inserting the image into the table, I created this message in pdf format "PIL.Jpegimageplugin.JPEGImageFile mode = RGB size = 200x200 at 0x179B1E8"
What could be the problem?