【问题标题】:How to combine two charts into the single PDF using ReportLab?如何使用 ReportLab 将两个图表组合成一个 PDF?
【发布时间】:2012-02-18 07:48:23
【问题描述】:

问题:我正在使用 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”类的对象传递给这个方法之后。但这种方法行不通。
我是 reportLab 和 python 的新手,所以请原谅我写了这么丑陋的代码。

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

【问题讨论】:

    标签: python reportlab


    【解决方案1】:

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

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

    那条线将饼图添加到绘图中,然后您需要将第二个图表添加到使用 _add 方法的同一绘图中,再次像第 46 行的 sn-p 一样添加图例。您的绘图将包含两个图表,当您将其保存为 PDF 时,您应该同时获得它们。

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 非常感谢您的回复,我的问题是如何将此图表添加到现有的 PDF 中。因为我附加的代码 sn-ps 用于生成全新的 PDF。有没有办法把这个pdf作为一个对象或类似的东西?所以我可以在我现有的 pdf 中使用它,并且可以在任何地方以任何方式绘制它。或参考一些代码sn-ps,我可以通过它更好地了解它?任何想法或建议将不胜感激。谢谢
    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多