大虾能生成带链接的PDF吗?

问题描述 投票:0回答:4

我需要将链接嵌入到 Ruby on Rails 应用程序中生成的 pdf 中。有没有办法用虾来做这个?

读到这篇文章后发现,prawn-format 是一段时间的答案,但 0.7.x 打破了这一点。

prawn-format 使用

link_annotate(rect, options={})
函数来创建链接。需要传递哪些选项才能使其在 PDF 中创建链接?

编辑:
如果有人有的话,我希望看到一个代码示例。

ruby-on-rails ruby pdf prawn
4个回答
27
投票

我知道这是一个老问题,但对于那些仍然遇到这个问题的人来说,在当前版本的 Prawn 中,您可以使用如下内联格式:

pdf.text 'Website: <color rgb="0000FF"><u><link href="http://www.stackoverflow.com">stackoverflow</link></u></color>', :inline_format => true

10
投票

如果您尝试创建指向外部页面 (http://google.com) 的链接,例如,您可以使用以下内容放置一个 100x100 的链接,并将其放置在左下角 5, 5 处页面的宽度,带有 1px 边框:

pdf.link_annotation([100, 100, 5, 5], :Border => [0,0,1], :A => { :Type => :Action, :S => :URI, :URI => Prawn::LiteralString.new("http://google.com") } )

Prawn Format 会解析传递给 pdf.text 方法的文本并找到 html a 标签。然后,它将使用正则表达式来解析目标和链接文本,最后创建一个像上面的链接一样的链接,其中包含一个适合标签内文本的边框(第一个参数)。我不确定如果没有 Prawn Format 如何实现这一点。但这就是您如何使用 link_annotation 创建链接。


1
投票

从 Prawn 0.7 开始,prawn-format 为 完全不受支持,并且不会 适用于 Prawn 0.7+ 版本。感觉 当然可以自由分叉和修复 - prawn-format 的 github 主页

另一个选择是使用 prawn 内置的低级注释支持: http://prawn.majesticeacreature.com/docs/prawn-core/classes/Prawn/Document/Annotations.html#M000158

方法如下:

link_annotation(矩形,选项={})

创建链接的便捷方法 注释。矩形必须是一个数组 四个数字,描述了范围 注释。选项哈希 应包括:Dest (描述目标目的地, 通常作为一个字符串 记录在文档的 Dests 中 树),或:A(描述一个动作 单击链接即可执行),或 :PA (用于描述要链接到的 URL)。


0
投票

我最近这样做了 - 效果很好:

      formatted_text_box([{:text=>"Google", :link=>"https://google.com", :color=>"0000ee"}])
© www.soinside.com 2019 - 2024. All rights reserved.