3

我正在 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

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

4

2 回答 2

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_pageswith:filter选项是否适用于图像(如果您还没有尝试过)。我完全不知道它是否有效,我现在没有机会检查它。

于 2011-05-24T12:02:18.537 回答
-1

不确定这是否有帮助,但WickedPDF是 Prawn 的一个很好的替代品。

于 2011-05-24T11:57:10.967 回答