Креветка: возможен статический заголовок с информацией о конкретной модели?
Я создаю функцию экспорта PDF в Rails и Prawn, где я хочу экспортировать несколько "Компаний" в один PDF. Компания обычно перетекает в 2-3 страницы. Прямо сейчас при экспорте одной компании это работает с pdf.repeat(: все). Я хочу, чтобы логотип изменился в заголовке, в зависимости от компании. Простой пример кода:
@companies.each do |c|
pdf.repeat(:all) do
pdf.image company.logo.url(:thumb), :at => [0,520]
end
end
Есть ли способ сделать это? Я смотрел на связанные темы, такие как верхний и нижний колонтитулы в Prawn PDF, но это мне не поможет, так как я не вижу, к какой компании принадлежит какая страница после ее создания.
2 ответа
Удивительное руководство по самодокументированию (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
Опция работает с изображениями (если вы еще не пробовали). Я абсолютно не знаю, работает ли это, и у меня нет шансов проверить это прямо сейчас.
Не уверен, поможет ли это, но WickedPDF - хорошая альтернатива Prawn.