使用ReportLab引用更多页面
我正在使用ReportLab来制作很长的问卷,我需要创建类似这样的文本:
如果你没有过敏,请继续到第168页
ReportLab有没有什么功能可以帮助我完成这个引用的任务呢?
我明白这个问题可能需要一个两次遍历的算法。第一次遍历是找到页码,第二次遍历则是完成文本,调整引用到正确的页面。ReportLab的API中有没有什么可以帮助我实现这个的东西呢?
2 个回答
0
这是我让它工作的方式:
1. 必须像这样注册目标位置(名字是关键):
st = ParagraphStyle('a style', alignment=TA_CENTER)
from hashlib import sha1
destination = sha1("Vintage".encode('utf-8')).hexdigest()
b = Paragraph("My Page"+'<a name="%s"/>' % destination, st)
b._bookmarkName = destination
=====
2. 然后在你要点击的段落链接上这样做(这里的关键是前面要有一个井号#):
contents = Paragraph(text="This <a href=#{} color=blue> Vintage </a>".format(destination), style=st)
在这个段落中,你点击“Vintage”,然后就会跳转到你想去的目标页面。
1
虽然这个问题已经有两年了,但我还是想给出一个答案,方便那些通过搜索引擎找到这个问题的人:
Reportlab支持内部链接。报告实验室用户指南中相关的部分 [仅限PDF,点击 这里 可获取] 说...
PDF支持内部超链接。可以创建多种类型的链接、目标和点击后可以触发的事件。目前,我们只支持从文档的一部分跳转到另一部分的基本功能,并且可以在跳转后控制窗口的缩放级别。bookmarkPage方法定义了一个跳转的终点... [第4.2节]