我正在使用 ReportLab 创建长问卷,我需要创建类似的文本
如果您没有过敏症,请转至第 168 页
ReportLab 是否提供了一些可以帮助我完成此引用任务的功能?
我知道这个问题可能需要一个两遍算法。在第一遍中,找到页码。第二遍完成文本,调整对适当页面的引用。ReportLab API 中有什么东西可以在这种情况下提供帮助吗?
距离最初的问题已有两年了,但为了其他可能会从搜索引擎找到这个问题的人,我会冒险回答:
Reportlab 支持内部链接。报告实验室用户指南的相关部分 [仅限 PDF,可在此处获得] 内容为...
PDF 支持内部超链接。可以通过单击触发的链接类型、目标类型和事件范围非常广泛。目前我们只支持从文档的一个部分跳转到另一个部分的基本功能,以及在跳转后控制窗口的缩放级别。bookmarkPage 方法定义了一个目的地,它是跳转的终点……[第 4.2 节]
这是我如何使它工作的:
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,然后转到您想要的目标页面