【发布时间】:2010-07-27 20:32:52
【问题描述】:
我正在使用 ReportLab 创建长问卷,我需要创建类似
的文本如果您没有过敏,请转到第 168 页
ReportLab 是否提供了一些可以帮助我完成此引用任务的功能?
我知道这个问题可能需要一个两遍算法。在第一遍中,找到页码。第二遍完成文本,调整对适当页面的引用。 ReportLab API 中有什么东西可以在这种情况下提供帮助吗?
【问题讨论】:
我正在使用 ReportLab 创建长问卷,我需要创建类似
的文本如果您没有过敏,请转到第 168 页
ReportLab 是否提供了一些可以帮助我完成此引用任务的功能?
我知道这个问题可能需要一个两遍算法。在第一遍中,找到页码。第二遍完成文本,调整对适当页面的引用。 ReportLab API 中有什么东西可以在这种情况下提供帮助吗?
【问题讨论】:
距离最初的问题已有两年了,但为了其他可能会从搜索引擎找到这个问题的人,我会冒险回答:
Reportlab 支持内部链接。报告实验室用户指南的相关部分 [仅限 PDF,here 可用] 内容为...
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,然后转到您想要的目标页面
【讨论】: