虾:具有模型特定信息的静态头可能吗?

时间:2011-05-24 11:51:06

标签: ruby-on-rails prawn prawnto

我正在Rails和Prawn中构建PDF导出功能,我想在一个PDF中导出许多“公司”。一家公司通常流量超过2-3页。现在,当导出单个公司时,这适用于pdf.repeat(:all)。我希望徽标可以根据公司的标题进行更改。一个简单的代码示例是:

@companies.each do |c|
 pdf.repeat(:all) do
  pdf.image company.logo.url(:thumb), :at => [0,520]
 end
end

有没有办法做到这一点?我查看了相关的主题,例如header and footer in Prawn PDF,但它对我没有帮助,因为我看不到公司在生成后属于哪个页面。

2 个答案:

答案 0 :(得分:3)

令人敬畏的自我记录手册(http://cloud.github.com/downloads/sandal/prawn/manual.pdf)包含此代码(第105页),可能会有所帮助:

repeat(lambda { |pg| pg % 3 == 0 }) do
  draw_text "Every third page", :at => [250, 20]
end
repeat(:all, :dynamic => true) do
  draw_text page_number, :at => [500, 0]
end

如果你知道哪家公司从什么页面开始,那么lambda或动态应该为你做的伎俩。

如果您不知道每家公司的页数,请为每个公司制作一个pdf并合并它们。手册,第109页:

filename = "#{Prawn::BASEDIR}/data/pdfs/multipage_template.pdf"
Prawn::Example.generate("full_template.pdf", :template => filename) do
  go_to_page(page_count)
  start_new_page
  text "Previous pages and content imported.", :align => :center
  text "This page and content is brand new.", :align => :center
end

在最糟糕的情况下,您最终会同时合并两个。

您还可以检查带有pdf.number_pages选项的:filter是否适用于图片(如果您尚未尝试过)。我完全不知道它是否有效,我现在没有机会检查它。

答案 1 :(得分:-1)

不确定这是否有帮助,但WickedPDF是Prawn的一个很好的选择。