是否可以在 reportlab 中创建具有不同页面大小的 PDF 文档?
我想创建一个文档,其中第一页的大小与其他页面不同。任何人都可以帮忙吗?
是的,这应该是可能的,因为 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 内部的工作原理。
我的用例是在 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)