13

是否可以在 reportlab 中创建具有不同页面大小的 PDF 文档?

我想创建一个文档,其中第一页的大小与其他页面不同。任何人都可以帮忙吗?

4

2 回答 2

19

是的,这应该是可能的,因为 PDF 支持这一点,这只是如何在 ReportLab 中实现它的问题。我从来没有这样做过,但以下应该工作:

c = reportlab.pdfgen.canvas.Canvas("test.pdf")
# draw some stuff on c
c.showPage()
c.setPageSize((700, 500)) #some page size, given as a tuple in points
# draw some more stuff on c
c.showPage()
c.save()

您的文档现在应该有两页,一页具有默认大小的页面,另一页的页面大小为 700 pt x 500 pt。

如果您使用的是 PLATYPUS,您应该能够实现相同的目标,但可能需要花哨的BaseDocTemplate子类来处理页面大小的变化,因为我很确定PageTemplate机器不支持这一点,因为每个PageTemplate主要是一种改变框架在每一页上的布局方式的方法。但这在技术上是可行的,只是没有记录,您可能需要花一些时间阅读和了解 PLATYPUS 内部的工作原理。

于 2011-05-05T12:14:08.490 回答
0

我的用例是在 pdf 中创建一个大表。由于桌子很大,两边都被剪掉了。这是如何创建具有自定义大小的 pdf。我正在使用来自 reportlab 的鸭嘴兽。

from reportlab.platypus import  SimpleDocTemplate
from reportlab.lib.units import mm, inch

pagesize = (20 * inch, 10 * inch)  # 20 inch width and 10 inch height.
doc = SimpleDocTemplate('sample.pdf', pagesize=pagesize)
data =    [['sarath', 'indiana', 'usa'],
                            ['jose', 'indiana', 'shhs']]
table = Table(data)
elems = []
elems.append(table)
doc.build(elems)

one downside of this technique is the size is same for all pages.But will help people looking to create pdf with custom size (same for all pages)

于 2020-09-30T10:40:31.437 回答