Как объединить две диаграммы в один PDF с помощью ReportLab? - PullRequest
1 голос
/ 18 февраля 2012

Вопрос: я генерирую диаграммы с использованием 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. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2012

Если вы внимательно посмотрите на предоставленный вами фрагмент кода (заявление об отказе: я написал ;-)), в частности, в строке № 33, вы увидите

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

Эти строки добавляют круговую диаграмму к чертежу, вы будетезатем необходимо добавить вторую диаграмму к тому же чертежу, который вы используете метод _add, опять же, как это делает фрагмент в строке № 46 для добавления легенды.На вашем чертеже будут две диаграммы, и когда вы сохраните их в формате PDF, вы должны получить их обе.

0 голосов
/ 19 февраля 2012

Являются ли эти две диаграммы на самом деле полной страницей?Если это так, вы можете просто вызвать разрыв страницы между рисованием двух.В противном случае вы можете просто отрегулировать координаты, чтобы обе они поместились на странице.

В качестве альтернативы, если вы делаете что-то более сложное и в конечном итоге используете Platypus, возможно, имеет смысл создать пользовательский Flowable, чтобы отобразить их.

...