图片不会在表格中呈现,请协助

时间:2017-05-10 02:28:45

标签: python image matplotlib reportlab

我正在尝试将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'

1 个答案:

答案 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在哪里,但这个技巧很好。