У меня есть 4-страничный шаблон для моего PDF-файла, который я хотел бы сгенерировать с помощью prawn. Я должен повторять этот шаблон в своем pdf-формате несколько раз, каждый раз заполняя его другим контентом.шаблон крестцового повтора, заполняющий его различным содержанием
Если я использую:
Prawn::Document.generate('output.pdf', template: "a_template.pdf")
я получаю шаблон один раз в output.pdf, последующие страницы пусты.
Если я использую
["John", "Jane"].each do |user|
start_new_page template: 'a_template.pdf', page: 1
text "Content filled on page 1 for user #{user}"
3.times { |i| start_new_page template: 'a_template.pdf', template_page: i+2 }
end
Я получаю текст «Содержимое заполненного на странице 1 для пользователя ...» повторил и перезаписывать друг друга, на каждой странице, которая является первой страницы из шаблона. Поэтому для каждой четвертой страницы у меня есть контент для всех пользователей, которые отображаются в одном месте на странице.
Кто-нибудь знает, как заставить креветку включать шаблон несколько раз, каждый раз, заполняя шаблон другим содержимым? Я хотел бы избежать создания кучи PDF файлов и конкатенации их вместе ...
Даже если я первый сцепить вместе шаблон нужное количество раз, для каждого пользователя, используя код ниже:
tmp_template = Tempfile.new ['template', '.pdf'], tmpdir
Prawn::Document.generate(tmp_template.path, skip_page_creation: true) do
users.each do |u|
4.times { |i| start_new_page template: card_tmpl, template_page: i+1 }
end
end
А потом делать:
Prawn::Document.generate('output.pdf', template: tmp_template.path)
заполнить последующие копии шаблона для последующих пользователей, он по-прежнему ставит один и тот же контент, когда копия первой страницы появится в новом шаблоне!
Замечания сторонников креветок к [этой проблеме] (https://github.com/prawnpdf/prawn/issues/494) показывают, что мы должны найти другую библиотеку PDF. Креветка решила отказаться от поддержки шаблонов. – wrzasa