铁轨宝石虾,图像和锚

use*_*949 9 ruby ruby-on-rails prawn

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

text "<link anchor='page20'>Go to page 20</link>", :inline_format=>true
Run Code Online (Sandbox Code Playgroud)

然后在第20页我有

add_dest('page20', dest_fit(page.dictionary))
Run Code Online (Sandbox Code Playgroud)

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

lig*_*h05 5

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

Prawn自己的自述文件说明:

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

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

  • 有用信息的+1,特别是"如果你不介意在你的图像上有文字,那么这可能是一个解决方案",这是我的黑客的基础,以及与Wicked PDF的链接. (2认同)

Pau*_*nti 5

部分归功于lightswitch05对于正确方向的一些刺激,我找到了一种通过这种不优雅的方式获得我想要的效果的方法:

  • 在a中插入图像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
Run Code Online (Sandbox Code Playgroud)

毋庸置疑,这种经历让我对Wicked PDF有了更多的了解,以便做我认为我想用PDF做的事情.

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