我正在尝试将MathplotLib生成的图像渲染为ReportLab创建的pdf。请修理。
graph1 = Image(filename='Graphs/AvgAnnMedCostPerEE.png',x=50,y=50,width=None,height=None,path='Graphs/AvgAnnMedCostPerEE.png')#,kind='direct',mask='auto',hAlign='CENTER',)
first_graph_table_header = [["Average Annual Medical Cost Per Employee",""],
["",graph1]]
first_graph_page_style = TableStyle([('SPAN', (0, 0), (1, 0))])
# ('ALIGN', (0, 3), (8, 3), 'CENTER'),
# ('ALIGN', (0, 0), (8, 0), 'CENTER'),
# ('VALIGN', (0, 0), (8, 0), 'MIDDLE'),
# ('VALIGN', (2, 3), (6, 3), 'MIDDLE'),
# ('BACKGROUND', (0, 2), (8, 2), colors.HexColor('#305496')),
# ('BACKGROUND', (0, 3), (8, 3), colors.HexColor('#b4c6e7')),
# ('BACKGROUND', (8, 2), (8, 3), colors.orange),
# ('FONT', (0, 2), (-9, -2), 'Helvetica-Bold', 10),
# ('FONT', (2, 3), (-7, -1), 'Helvetica-Bold', 12),
# ('FONT', (3, 3), (-3, -1), 'Helvetica-Bold', 10),
# ('TEXTCOLOR', (0, 2), (-9, -2), colors.white)
# ])
g1 = Table(first_graph_table_header, colWidths=[14.75, 161],
rowHeights=[5.5*mm, 2*inch])
g1.setStyle(first_graph_page_style)
self.story.append(g1)
self.story.append(Image(filename='Graphs/AvgAnnMedCostPerEE.png',x=50,y=50,width=None,height=None,path='Graphs/AvgAnnMedCostPerEE.png'))
self.story.append(PageBreak())
# def createGraphs(self, canvas, doc):
# ----------------------------------------------------------------------
if __name__ == "__main__":
t = CoverPage_Index()
t.run()
我一直得到AttributeError:图像实例没有属性'getKeepWithNext'
答案 0 :(得分:2)
我遇到了同样的问题。经过一番疯狂之后,我明白原因是名字冲突。所以这是适合我的解决方案。 您需要一个可流动的图像,但名称 Image 在您导入的类中可能不是唯一的。 首先,为Image类提供一个您确定在导入时唯一的名称;我使用过GNAA(地球上会写一个名为GNAA的类?)。
from reportlab.platypus.flowables import Image as GNAA
然后你可以用它来挑选一个图像。在此示例中,图像与python程序位于同一目录中。重要提示:使用jpg,因为png可能不起作用:
logo = "logo.jpg"
im = GNAA(logo, width=200, height=38)
story.append(im)
现在,图像是正确的,可以流动,并且需要所有正确的参数。 我没有调查Image的doppelganger在哪里,但这个技巧很好。