Креветка: возможен статический заголовок с информацией о конкретной модели? - PullRequest
2 голосов
/ 24 мая 2011

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

3 голосов
/ 24 мая 2011

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

0 голосов
/ 24 мая 2011

Не уверен, поможет ли это, но WickedPDF - хорошая альтернатива креветкам.

...