【问题标题】:Reportlab: Is it possible to have internal links in Platypus?Reportlab:鸭嘴兽中是否可以有内部链接?
【发布时间】:2012-12-16 04:24:01
【问题描述】:

我知道我可以在内部与画布链接,但我的整个文档都是用鸭嘴兽设置的。 Platypus 是否支持内部链接?如果不迁移到画布有多难?

提前致谢!

【问题讨论】:

    标签: python reportlab platypus


    【解决方案1】:

    您可以使用段落内标记来创建锚点(<a> 标记)和链接(<link> 标记),如 6.3 段落内标记部分所述(第 6 章,页面72) 的ReportLab 2.6 User Manual PDF,其中还包含以下示例:

    This <a href="#MYANCHOR" color="blue">is a link to</a> an
    anchor tag ie <a name="MYANCHOR"/><font color="green">here</font>.
    This <link href="#MYANCHOR" color="blue" fontName="Helvetica">is
    another link to</link> the same anchor tag.
    

    【讨论】:

    • 它也适用于外部超链接。谢谢你的指点。
    • 我不认为这是被问到的。创建“目的地”(问题中的MYANCHOR)的方法可以通过canvasbookmarkPage方法设置。我想问题是问是否可以在鸭嘴兽流中设置一个可以通过 链接的目的地。
    【解决方案2】:

    一种受https://www.blog.pythonlibrary.org/2014/03/10/reportlab-how-to-create-custom-flowables/启发的方法。

    创建一个继承自Flowables的自定义类,可以添加到“故事”中

    class flowable_bookmark(Flowable):
        def __init__(self, x=0, y=0, width=10, height=10, bookmark_name = "", text=""):
            Flowable.__init__(self)
            self.x = x
            self.y = y
            self.width = width
            self.height = height
            self.bookmark_name = bookmark_name
            self.text = text
    
        def draw(self):
            self.canv.drawString(self.x, self.y, self.text)
            self.canv.bookmarkPage(self.bookmark_name)
    

    用法:

    my_anchor = flowable_bookmark("MYANCHOR", text=" ")
    self.story.append(my_anchor)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多