我的主要目标是让页面上所有的图像流动,使它们看起来像是可点击的链接。为了做到这一点,我会创建一个画布.linkRect()并将其放置在渲染图像上。下面是我如何使用画布.linkRect():
canvas.linkURL(
url='url_goes_here',
rect=(x1, y1, x2, y2), #(x1, y1) is the bottom left coordinate of the rectangle, (x2, y2) is the top right
thickness=0, relative=1
)
在查看了BaseDocTemplate类之后,我发现了一个名为afterFlowable(self,flowable)的方法。我重写了该方法,并对传入的flowable调用了dir(),结果是:
^{pr2}$它有一个width和height属性,我可以用它来确定linkRect()应该有多大(x2和y2应该是什么),但是没有关于流从哪里开始的信息(x1和y1应该是什么?)。在
如果其他方法都失败了,我会考虑以某种方式将一个帧与一个可流动的图像配对,因为一个帧包含我要创建linkRect()的信息。然而,这似乎是一个麻烦,知道什么时候和如何订购一个帧的列表,它各自的流动列表,除了必须知道这些帧的图像到底放在哪里。有没有别的方法可以达到这个目的呢?还是不可能?在
谢谢!在
今天工作了一天之后,我终于想出了一个好办法!下面是我如何为其他人谁想这一功能的超链接图像流动在他们的PDF。在
基本上,
reportlab.platypus.flowables
有一个名为Flowable
的类,Image
继承自该类。Flowable有一个名为drawOn(self, canvas, x, y, _sW=0)
的方法,我在我创建的名为HyperlinkedImage
的新类中重写了该方法。在而不是创建一个reportlab.platypus.Image由于您的图像可以流动,请改用新的HyperlinkedImage:)
相关问题 更多 >
编程相关推荐