我对链接和reportlab感到困惑。
我想要一个带有单词的文本,其中包含一个可点击的链接。
例如,我写了这样的文字:This web-site is called StackOverflow.
我希望单词StackOverflow
可以点击并指向相应的页面。
有没有办法实现这个目标?
更新
在这种情况下,我想将超链接添加到单词,而不仅仅是画布。
答案 0 :(得分:1)
所以,非常感谢Steven Byrne,他提出了Jerry Stratton的解决方案,并且非常感谢!
我只是上传这个简单的代码,所以对于需要这样的解决方案的人来说,看看:
from reportlab import platypus
from reportlab.lib.styles import ParagraphStyle as PS
from reportlab.platypus import SimpleDocTemplate
items = []
address = 'WHATEVERYOUWNATTOTYPE'
address = '<link href="' + 'http://www.hoboes.com/Mimsy/hacks/adding-links-to-pdf/' + '">' + address + '</link>'
items.append(platypus.Paragraph(address, PS('body')))
doc = SimpleDocTemplate('testLInk.pdf')#, pagesize = reportlab.lib.pagesizes.portrait(reportlab.lib.pagesizes.A4))
doc.multiBuild(items)
此link将导致原始解决方案。
答案 1 :(得分:1)
对于那些感兴趣的报告实验室,“不添加文本链接”,但它有一个名为 platypus 的扩展名,允许您使用HTML链接标记链接文本。以下代码由Jerry Stratton的blog post提供 下面的代码是一个适用于Anna-Lischen的示例(修改为更通用)
from reportlab import platypus
from reportlab.lib.styles import ParagraphStyle as PS
from reportlab.platypus import SimpleDocTemplate
items = []
address = '<link href="' + 'http://YourWebsite.com' + '">' + My Text + '</link>'
items.append(platypus.Paragraph(address, PS('body')))
doc = SimpleDocTemplate('testLInk.pdf')#, pagesize = reportlab.lib.pagesizes.portrait(reportlab.lib.pagesizes.A4))
doc.multiBuild(items)
作为旁注,更常见的方法是使用博客中的第一个选项并在页面上使用矩形,但是您可以选择最适合您情况的选项。 这也是Platypus FAQ
的绝佳资源