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


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

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


917
2018-05-04 11:28


起源



答案:


是的,这应该是可能的,因为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 子类来处理更改的页面大小,因为我很确定 PageTemplate 自从每个机器都没有支持这个 PageTemplate 主要是一种改变每页上框架布局方式的方法。但这在技术上是可行的,它只是没有记录,你可能不得不花一些时间阅读和理解PLATYPUS如何在内部工作。


12
2018-05-05 12:14



幸运的是我没有使用PLATYPUS,所以你的解决方案就像一个魅力(不需要潜入PLATYPUS)。非常感谢,到处寻找答案! - Sjoerd Rijpkema


答案:


是的,这应该是可能的,因为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 子类来处理更改的页面大小,因为我很确定 PageTemplate 自从每个机器都没有支持这个 PageTemplate 主要是一种改变每页上框架布局方式的方法。但这在技术上是可行的,它只是没有记录,你可能不得不花一些时间阅读和理解PLATYPUS如何在内部工作。


12
2018-05-05 12:14



幸运的是我没有使用PLATYPUS,所以你的解决方案就像一个魅力(不需要潜入PLATYPUS)。非常感谢,到处寻找答案! - Sjoerd Rijpkema