Креветка: возможен статический заголовок с информацией о конкретной модели?

Я создаю функцию экспорта 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.

Другие вопросы по тегам