【问题标题】:rails gem prawn, image and anchorrails gem prawn,图像和锚点
【发布时间】:2011-11-27 21:06:01
【问题描述】:

你能告诉我如何插入图像,该图像将成为例如第 20 页的链接吗?我知道如何使用普通文本:

text "<link anchor='page20'>Go to page 20</link>", :inline_format=>true

然后在第 20 页我有

add_dest('page20', dest_fit(page.dictionary))

但是如何用图像做到这一点?

【问题讨论】:

  • 我目前遇到了同样的问题。你有没有找到使用 Prawn 在图片中嵌入链接的方法?
  • 你不能只使用 HTML 吗? &lt;a href="path2file.pdf"&gt; &lt;img src="filepath" other stuff /&gt; &lt;/a&gt;
  • 查看Prawn documentationPrawn repo,我发现没有提到支持在pdf 的图像中嵌入链接。理想情况下,我可以执行image "local_image.png", href: "http://example.com" 或表格单元格{ image: open("remote_image.png"), href: "http://example.com" } 之类的操作,但我似乎做不到,所以我想知道是否有解决方法。

标签: ruby-on-rails ruby prawn


【解决方案1】:

部分感谢lightswitch05 对正确方向的一些推动,我找到了一种通过这种不优雅的方式获得我想要的效果的方法:

  • bounding_box 中插入图片(cursor 页面此时位于图片底部)
  • 将光标移回图像顶部
  • 在图像上插入文本链接(在我的例子中,我只是使用了许多垂直条“|”来覆盖图像)
  • 在视觉上确认可点击的链接区域与图像的边界大致相同
  • 使文本链接透明,瞧,看起来您正在单击图像。

这是一些示例代码(测量结果不准确;涉及到很多调整):

bounding_box([0, cursor], width: 35) do
  image open("http://mysite.com/remote_image.jpg"), 
        fit: [35, 35], 
        align: :center
  move_up 35
  transparent(0) do
    formatted_text([{
      text: "|||", # placeholder
      size: 40,
      link: "http://example.com/"
    }], align: :center)
  end
  # stroke_bounds
end

不用说,这次经历让我更多地关注Wicked PDF,以便做我想用 PDF 做的事情。

我确信存在更好/更优雅的解决方案,所以我不打算考虑这是我的最终答案。

【讨论】:

  • 透明文字!哇,我是如此接近那个结论,我不敢相信我错过了它。好想法!无论如何,我希望 Prawn 对你有用,但如果不是,我强烈推荐 Wicked PDF
【解决方案2】:

Prawn 不支持此功能。事实上,即使您在图像上放置formatted_text_box 并用空白填充它,它仍然无法正常工作。锚点必须包含文本才能工作。如果您不介意在图像上添加文字,那么这可能是一个解决方案。

Prawn 自己的自述文件指出:

Prawn 不是,也永远不会是 HTML 到 PDF 的生成器。

在处理了 Prawn 的许多缺点之后,我转而使用 wicked_pdf 生成我的 Ruby on Rails PDF 并且对此非常满意。如果你可以用html & css 做,可以用wicked_pdf 做。

【讨论】:

  • +1 获取有用信息,尤其是“如果您不介意在图像上添加文字,那么这可能是一个解决方案”,这是我的 hack 的基础,以及指向 Wicked 的链接PDF。
  • 再次感谢您的帮助。
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多