虾 - 在每页的页脚中放置图像

时间:2013-10-17 17:54:59

标签: ruby prawn

我有一张图片image.jpg,我希望将其放在每页左下角的页脚中。我目前正在这样做,使用Ruby 1.9.3和prawn gem来创建PDF,如下所示:

start_new_page
image "image.jpg", :at => [0,30]  

这有两个问题:

1)我正在动态创建页面,我需要将图像放在所有页面上。由于我从来不知道会创建多少页面,因此我不知道如何在每个页面上放置图像。

2)我的PDF中的表格被写在徽标的顶部,导致徽标不可见。

我在示例中找到了这段代码:

number_pages "<page> in a total of <total>", { :start_count_at => 0, :page_filter => :all, :at => [bounds.right - 50, 0], :align => :right, :size => 14 }

这将按照我想要的方式动态地在每个页面上放置文本;但是,它不适用于图像。

如何在我的文档中的每个页面的左下角放置图像?

2 个答案:

答案 0 :(得分:5)

为什么不使用重复

repeat(:all) do
 image "image.jpg", :at => [pdf.bounds.right - 100, 0], :align => :right
end

您可以在Prawn手册(第98页)中找到更多信息。

答案 1 :(得分:2)

这究竟是什么问题?

这对我来说很好:

require 'prawn'

Prawn::Document.generate('hello.pdf') do |pdf|
  pdf.text("Hello Prawn!")
  pdf.image "image.jpg", :at => [pdf.bounds.right - 100, 0], :align => :right
  pdf.number_pages "<page> in a total of <total>", :start_count_at => 0, :page_filter => :all, :at => [pdf.bounds.right - 100, 0], :align => :right, :size => 14
end

并将其添加到所有页面,您可以执行此操作:

require 'prawn'

Prawn::Document.generate('hello.pdf') do |pdf|
  pdf.text("Hello Prawn!")
  pdf.start_new_page
  pdf.text("Hello Prawn!")
  pdf.start_new_page
  pdf.text("Hello Prawn!")
  pdf.page_count.times do |i|
    pdf.go_to_page i
    pdf.image "image.jpg", :at => [pdf.bounds.right - 100, 0], :align => :right
  end
  pdf.number_pages "<page> in a total of <total>", :start_count_at => 0, :page_filter => :all, :at => [pdf.bounds.right - 100, 0], :align => :right, :size => 14
end

可能有更好的选择,但我之前从未使用过虾。