铁轨宝石虾,图像和锚

时间:2011-11-27 21:06:01

标签: ruby-on-rails ruby prawn

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

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

然后在第20页我

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

但如何用图片做到这一点?

2 个答案:

答案 0 :(得分:5)

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

Prawn自己的自述文件说明:

  

Prawn不是,也绝不会是HTML格式的PDF生成器。

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

答案 1 :(得分:5)

部分感谢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做的事情。

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