铁轨gem虾,图像和锚

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

text "Go to page 20", :inline_format=>true 

然后在第20页我有

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

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

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

Prawn自己的自述文件说明:

Prawn不是,也绝不会是HTML生成器。

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

部分归功于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做的事情。

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