本文整理汇总了Python中reportlab.pdfgen.canvas.Canvas.beginForm方法的典型用法代码示例。如果您正苦于以下问题:Python Canvas.beginForm方法的具体用法?Python Canvas.beginForm怎么用?Python Canvas.beginForm使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类reportlab.pdfgen.canvas.Canvas
的用法示例。
在下文中一共展示了Canvas.beginForm方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Report
# 需要导入模块: from reportlab.pdfgen.canvas import Canvas [as 别名]
# 或者: from reportlab.pdfgen.canvas.Canvas import beginForm [as 别名]
#.........这里部分代码省略.........
## Create the page number label; 'Page X of'
self.page_num = Field()
self.page_num.style.horizontal_alignment = alignment.RIGHT
self.page_num.style.vertical_alignment = alignment.TOP
self.page_num.width = self._working_width - 13
#self.page_num.style.color = (.6,.6,.6)
self.page_num.horizontal_padding = 0
self.page_num.style.size = 8
## Create the last page number label
self.last_page = Field()
#self.last_page.style.horizontal_alignment = alignment.LEFT
self.last_page.style.vertical_alignment = alignment.TOP
#self.last_page.width = self._working_width
#self.last_page.style.color = (.6,.6,.6)
self.last_page.horizontal_padding = 0
self.last_page.style.size = 8
## Objects to be drawn
self.draw_list = []
self._page_count = 1
#-----------------------------------------------------------------------Add
def add(self, item):
## Add any object that, duck-typingly, has a 'draw_some' method
self.draw_list.append(item)
#--------------------------------------------------------------------Create
def create(self):
self.canvas.setAuthor(self.author)
self.canvas.setTitle(self.title)
self.canvas.setSubject('Python Generated Report')
self._draw_header()
self._draw_footer()
vspace = self._working_height
left = self.left_margin
right = self.page_width - self.right_margin
for item in self.draw_list:
while True:
if vspace < 1:
self._start_new_page()
vspace = self._working_height
yoff = self.bottom_margin + vspace
used = item.draw_some(self.canvas, left, right, yoff, vspace)
if used == 0:
break
else:
vspace -= used
## Add the numbering for last page
## We have to do this as a PDF 'Form' object since we don't know in
## advance how many pages there will be.
self.canvas.beginForm('last_page')
self.canvas.saveState()
self.last_page.value = '%d' % self._page_count
self.last_page.draw(self.canvas,
self._right_edge - ( self.right_margin + 14),
self.bottom_margin * .65)
self.canvas.restoreState()
self.canvas.endForm()
## Close the PDF
self.canvas.save()
#----------------------------------------------------------------Start Page
def _start_new_page(self):
self._page_count += 1
self.canvas.showPage()
self._draw_header()
self._draw_footer()
#---------------------------------------------------------------Draw Header
def _draw_header(self):
self.header.value = self.title
self.header.draw(self.canvas, self.left_margin, self._top_edge -
(self.top_margin * .65) )
#---------------------------------------------------------------Draw Footer
def _draw_footer(self):
self.footer.value = self.author
self.footer.draw(self.canvas, self.left_margin,
self.bottom_margin * .65)
self.date.draw(self.canvas, self.left_margin,
self.bottom_margin * .65)
self.page_num.value = 'Page %d of ' % self._page_count
self.page_num.draw(self.canvas, self.left_margin,
self.bottom_margin * .65)
self.canvas.doForm('last_page')