- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 ReportLab 的新手,正在尝试使用 Platypus 生成 PDF,其中每个部分都有不同的页面模板(以及不同的页眉和页脚)。如何在不使用 SimpleDocTemplate 的情况下使用 BaseDocTemplate 执行此操作?
我正在尝试下面的代码,但我无法显示框架的内容,除了我直接在 Canvas 上绘制的第一页。为了简洁起见,我删除了每个 PageTemplate 的额外格式以及页眉和页脚代码。
from reportlab.platypus import (BaseDocTemplate, Paragraph, Spacer,
PageBreak, Frame, PageTemplate, NextPageTemplate)
from reportlab.pdfgen import canvas
from reportlab.lib import pagesizes, units, styles, enums
class Report(object):
def __init__(self, stream, sections):
self.stream = stream
self.sections = sections
w, h = pagesizes.A4
self._width = w
self._height = h
self._story = []
self._doc = None
self._canvas = canvas.Canvas(self.stream)
self._stylesheet = styles.getSampleStyleSheet()
def generate(self):
'''Generate the report'''
self._doc = BaseDocTemplate(self.stream,
pagesize=(self._width, self._height),
showBoundary=True
)
# Start with the coverpage, then create a new page for each section.
self.coverpage()
for i, p in enumerate(self.sections):
self.render_section(i, p)
self._doc.build(self._story)
self._canvas.save()
def coverpage(self):
'''Draw the cover page'''
frame = Frame(0, 0, self._width, self._height)
self._doc.addPageTemplates(PageTemplate(id='cover', frames=[frame]))
self._story.append(PageBreak())
# The cover page just has some drawing on the canvas.
self._canvas.saveState()
self._canvas.setFont('Helvetica', 16)
self._canvas.drawCentredString(self._width / 2.0, self._height - 108,
"This is the first page")
self._canvas.restoreState()
def render_section(self, num, text):
'''Put stuff on the canvas that belong to this section.'''
frame = Frame(0, 0, self._width, self._height, showBoundary=1)
self._doc.addPageTemplates(PageTemplate(id='section-%d' % num,
frames=[frame]))
h1 = self._stylesheet['Heading1']
h1.alignment = enums.TA_CENTER
frames = [NextPageTemplate('section-%d' % num),
Paragraph(self.sections[num], h1),
Spacer(1, units.inch * 0.2),
PageBreak()]
self._story.extend(frames)
if __name__ == '__main__':
Report('report.pdf', "Why is this not showing?".split(" ")).generate()
最佳答案
你的答案是here .给定链接上的示例代码非常清楚地说明了如何使用 BaseDocTemplate 显示多个框架。
关于python - 如何在 ReportLab platypus 中使用 BaseDocTemplate 呈现多个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19002554/
我正在为一个基于 Django 的网站编写一些 PDF 生成代码,使用 ReportLab/Platypus 生成 PDF。 我对 PageTemplate 进行了子类化,这样我就可以进行一些一致的页
我正在尝试使用 Reportlab 在简单的 Django 应用程序上输出发票。做这样简单的事情似乎很难。这是我的代码: def print_pdf(fattura, soggetto, buffer
我正在处理包含表格和图像混合的报告。图像 [ 实际上是图形 ] 以 .png 格式保存到文件系统。 实际渲染PDF的方法是: def _render_report(report_data):
我知道我可以在内部链接 canvas,但我的整个文档都设置了 Platypus。 Platypus 是否支持内部链接?如果不迁移到 Canvas 有多难? 提前致谢! 最佳答案 您可以使用段落内标记来
我正在使用 Reportlab 的 Platypus 在 python 中制作一个动态生成的报告。 我生成了多个表格,大多数只有 10 到 20 行。现在它们在我的页面末尾被自动拆分,但我更希望它们留
我正在探索 Platypus Python 中的多目标优化库。在我看来,Platypus 应该支持变量(优化参数)作为开箱即用的整数,但是这个简单的问题(两个目标,三个变量,没有约束和带有 SMPSO
我有以下代码尝试调整 reportlab Platypus flowable 文本的字体大小,直到它适合我给它的可用高度。但是我发现 Paragraph flowable 没有在递归的每个循环中保存它
我正在使用 FFI::Platypus 来调用 C 函数。该函数有四个参数:两个字符串、一个指向缓冲区的指针和缓冲区大小: int helper_getAddr( const char *fi
我是 ReportLab 的新手,正在尝试使用 Platypus 生成 PDF,其中每个部分都有不同的页面模板(以及不同的页眉和页脚)。如何在不使用 SimpleDocTemplate 的情况下使用
我的主要目标是让页面上的所有可流动图像都像可点击链接一样工作。为此,我将创建一个 canvas.linkRect() 并将其放置在渲染图像上。这是我如何使用 canvas.linkRect() 的示例
我已经有了可以在 mac 上运行的软件,它可以由主“运行器”脚本驱动。但是,我希望将软件打包为 .app。在 Mac 上,我可以运行“platypus”(https://www.sveinbjorn.
我是一名优秀的程序员,十分优秀!