如何使用ReportLab将两个图表组合成单个PDF?

时间:2012-02-18 07:48:23

标签: python reportlab

问题:我正在使用ReportLab生成图表。图表生成正确但生成不同的PDF。我想将它们组合成一个现有的pdf。

代码的基本结构是

class BreakdownPieDrawing():

    def firstChart():
        #code for generating first Pie chart

    def secondChart():
        #code for generating second Pie chart

if __name__=="__main__":   
    drawing1 = BreakdownPieDrawing()  
    drawing1.firstChart()
    drawing1.save(formats=['pdf'],outDir='.',fnRoot='first')

    drawing2 = BreakdownPieDrawing()  
    drawing2.secondChart()
    drawing2.save(formats=['pdf'],outDir='.',fnRoot='second')

有关完整代码段,请参阅http://www.reportlab.com/snippets/4/

此代码生成两个单独的PDF。我如何将它们组合成单个PDF。

我试过这个代码:

def makePdf(self,drawing):  
    doc = SimpleDocTemplate('hello.pdf')
    doc.build(drawing)

然后我将“BreakdownPieDrawing”类的对象传递给此方法。但这种方法不起作用 我是reportBab和python的新手,所以请原谅我这么难看的代码。

所以问题是如何将这些图表添加到现有的pdf中。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

这两个图表实际上是整页吗?如果是这样,您可以在绘制两者之间调用分页符。否则,您只需调整坐标,以便两者都适合页面。

或者,如果您正在做一些更复杂的事情并最终使用Platypus,那么创建一个自定义Flowable来渲染它们可能是有意义的。

答案 1 :(得分:0)

如果你仔细查看你提供的代码片段(免责声明:我写的;-)),特别是第33行,你会看到

# adding a pie chart to the drawing   
self._add(self,Pie(),name='pie',validate=None,desc=None)

这些线条将饼图添加到图形中,然后您需要将第二个图表添加到使用_add方法的同一图形中,再次像第46行中用于添加图例的片段一样。你的绘图将有两个图表,当你将它保存为PDF时,你应该得到它们。