如何在reportlab,python中创建具有不同页面大小的PDF文档

时间:2011-05-04 11:28:38

标签: python pdf reportlab

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

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

2 个答案:

答案 0 :(得分:13)

是的,这应该是可能的,因为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磅到500磅。

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

答案 1 :(得分: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)

此技术的一个缺点是所有页面的大小都相同。但是这将帮助希望创建具有自定义大小的pdf的人(所有页面都相同)