Удивительное руководство по самодокументированию (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
Либо лямбда, либо динамика должны помочь вам при условии, что вы знаете, какая компания начинается с какой страницы.
В случае, если вы не знаете о количестве страниц в каждой компании, создайте для каждой из них 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
с изображениями (если вы еще не пробовали). Я абсолютно не знаю, работает ли он, и у меня нет шансов проверить это прямо сейчас.