rails gem prawn, image and anchor

偶尔善良 提交于 2019-12-03 13:11:42

Prawn does not support this functionality. In fact, even if you placed a formatted_text_box over an image and fill it with white space, it still will not work. An anchor has to include text to work. If you don't mind having text over your image, then that might be a solution.

Prawn's own readme states:

One thing Prawn is not, and will never be, is an HTML to PDF generator.

After dealing with many of Prawn's shortcomings, I've switched to using wicked_pdf for my Ruby on Rails PDF generation and have been very happy with it. If you can do it in html & css, it can be done with wicked_pdf.

Paul Fioravanti

Partly thanks to lightswitch05 for some prodding in the right direction, I've found a way to get the effect I want through this inelegant way:

  • Insert an image in a bounding_box (the page cursor is at this point at the bottom of the image)
  • Move the cursor back up to the top of the image
  • Insert a text link over the image (in my case I just used however many vertical bars '|' were needed to cover the image)
  • Confirm visually that the clickable link area is about the same as the boundaries of the image
  • Make the text link transparent, and voilà, it looks like you're clicking the image.

Here's some example code (measurements not exact; there was a lot of tweaking involved):

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

Needless to say, this experience has got me looking a bit more at Wicked PDF in order to do what I think I want to do with PDFs.

I'm sure a better/more elegant solution exists, so I'm not planning on considering this my final answer.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!