python把竖着的变成横着的数_python – Reportlab:如何切换纵向和横向?

我正在使用reportlab从动态数据自动生成pdf报告.由于内容有时太大,无法以纵向显示,所以我正在为大量内容切换到景观.

以下是我的报告生成工作原理:

主功能 :

doc = DocTemplate(...) //Doctemplate is a customed BaseDocTemplate class

array = []

some_data= "Here is some data displayed in portrait"

array.append(Paragraph(some_data))

large_data = "this data is too large to be displayed in portrait"

array.append(Paragraph(large_data))

... // Some more data is added after this

doc.build(array, canvasmaker=NumberedCanvas)

我正在寻找的是一种在每一步都可以从纵向切换到横向的方法,因为我不知道显示它需要的页面数量.我仍然是报告的新手,甚至有一点python,所以我看不到如何正确地使用reportlab(PageTemplates,流量)提供的解决方案,因为我正在构建整个文档.

这是我这个例子的其他有用的类:

class DocTemplate(BaseDocTemplate, ):

def __init__(self, filename, **kw):

apply(BaseDocTemplate.__init__, (self, filename), kw)

f = Frame(2.6*cm, 2.8*cm, 16*cm, 22.7*cm, id='f')

pt = PageTemplate('RectPage', [f], onPage=beforeDrawPage, onPageEnd=afterDrawPage)

//beforeDrawPage and afterDrawPage fill the headers of the page (that also need to be in landscape)

self.addPageTemplates(pt)

我想我会添加另一个页面模板或框架,但是在数据附加阶段我看不到我可以从一个切换到另一个.

class NumberedCanvas(canvas.Canvas):

def __init__(self, *args, **kwargs):

canvas.Canvas.__init__(self, *args, **kwargs)

self._saved_page_states = []

def showPage(self):

self._saved_page_states.append(dict(self.__dict__))

self._startPage()

def save(self):

"""add page info to each page (page x of y)"""

num_pages = len(self._saved_page_states)

for state in self._saved_page_states:

self.__dict__.update(state)

self.draw_page_number(num_pages)

canvas.Canvas.showPage(self)

self.setTitle("Title")

canvas.Canvas.save(self)

self._doc.SaveToFile(self._filename, self)

def draw_page_number(self, page_count):

self.setFont("Helvetica", 11)

self.drawRightString(18.5*cm, 26.8*cm,

"PAGE %d / %d" % (self._pageNumber, page_count))

我希望我没有忘记任何要澄清的内容.

提前谢谢了.

你可能感兴趣的:(python把竖着的变成横着的数_python – Reportlab:如何切换纵向和横向?)