开发者

Can prawn generate PDFs with links?

开发者 https://www.devze.com 2022-12-19 16:17 出处:网络
I need to embed a link into a generated pdf in a rub开发者_StackOverflow社区y on rails app. Is there a way to do this with prawn?

I need to embed a link into a generated pdf in a rub开发者_StackOverflow社区y on rails app. Is there a way to do this with prawn?

Reading about this it turns out that prawn-format was the answer for awhile, but 0.7.x broke this.

prawn-format uses the link_annotate(rect, options={}) function to create links. What options need to be passed into this to get it to create a link in the PDF?

edit:

I would like to see a code example of this being done if anyone has one.


I know this is an old question, but for those still stumbling upon it, in current versions of Prawn, you can use inline format like this:

pdf.text "Website: <link href='http://www.stackoverflow.com'>stackoverflow</link>", :inline_format => true


If you are attempting to create a link to an external page (http://google.com), for instance you could use the following, to place a link that is 100x100 and placed at 5, 5 from the bottom left of the page, with a 1px border:

pdf.link_annotation([100, 100, 5, 5], :Border => [0,0,1], :A => { :Type => :Action, :S => :URI, :URI => Prawn::LiteralString.new("http://google.com") } )

Prawn Format would parse the text passed to the pdf.text method and find html a tags. It would then use regular expressions to parse out the target and link text and finally create a link like the one above with a bounding box (the first param) that would fit around the text that was within the tags. I'm not sure how you could achieve this without Prawn Format. But that is how you can create a link using link_annotation.


As of Prawn 0.7, prawn-format is completely unsupported, and will not work with versions of Prawn 0.7+. Feel free to fork and fix, of course - prawn-format's homepage on github

The other option is to use prawn's built in low-level annotation support: http://prawn.majesticseacreature.com/docs/prawn-core/classes/Prawn/Document/Annotations.html#M000158

Heres the method:

link_annotation(rect, options={})

A convenience method for creating Link annotations. rect must be an array of four numbers, describing the bounds of the annotation. The options hash should include either :Dest (describing the target destination, usually as a string that has been recorded in the document‘s Dests tree), or :A (describing an action to perform on clicking the link), or :PA (for describing a URL to link to).


I recently did it like this - works great:

      formatted_text_box([{:text=>"Google", :link=>"https://google.com", :color=>"0000ee"}])
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号