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