Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rails gem prawn, image and anchor

Can you tell me how to insert image which will be a link to for example page 20? I know how to make with normal text:

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

and then on page 20 I have

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

but how to do this with image ?

like image 549
user958949 Avatar asked Nov 27 '11 21:11

user958949


2 Answers

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.

like image 74
Paul Fioravanti Avatar answered Nov 03 '22 01:11

Paul Fioravanti


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.

like image 29
lightswitch05 Avatar answered Nov 03 '22 00:11

lightswitch05