У меня есть pdf, созданный креветкой, он содержит заголовок, таблицу и нижний колонтитул. Оба верхнего и нижнего колонтитула повторяются, с :dynamic => true
, таблица нет.Повторитель в креветке PDF-рендеринг содержимого дважды
Проблема, с которой я сталкиваюсь, заключается в том, что весь контент в верхнем и нижнем колонтитулах отображается так, как будто он отображается дважды в одном и том же месте, и это, похоже, противоречит функции сглаживания, поэтому текст кажется изменчивым и полужирный (см. рисунок ниже). Однако, когда я увеличиваю или печатаю его, он выглядит правильно.
Вот некоторый код конкретной части, где я начинаю повторитель блоки:
pdf = Prawn::Document.new :page_size => "A4", :margin => [28, 20, 7, 20]
(...)
pdf.repeat :all, :dynamic => true do
pdf.bounding_box([0, 803], :width => 555, :height => 60) do
pdf.stroke_bounds
(...)
end
end
(...)
pdf.render
# End of file
Насколько я знаю, это способ по умолчанию, чтобы объявить блок ретранслятора, я почти mirrorred его от руководства.
Вот изображение: верхний контейнер - это заголовок, внутри ретранслятора, похоже, что все выделено жирным шрифтом, но это тот же самый шрифт и ширина строки, что и раздел ниже, который находится из таблицы, и выглядит нормально. Извините, я не могу опубликовать большую часть pdf-файла, это касается конфиденциальности.
Если удалить ретранслятор, заголовок будет выглядеть правильно, как надо, но когда я добавляю его снова это выглядит.
С кем-либо еще сталкивался с этой проблемой раньше? Как это исправить?
EDIT: Добавлен еще один код выше. Также добавлен следующий код, который находится внутри файла шаблона Rails «historico.pdf.prawn», и это, как я называю это контроллер для визуализации PDF и вернуть его к пользователю:
rendered_pdf = render_to_string :template => "reports/historico.pdf"
send_data rendered_pdf, :filename => "Historico.pdf", :type => "application/pdf"
Я использую шаблон .pdf.prawn Rails, но я не называю его так же, как парень в связанной проблеме. Я попробую этот метод холста и посмотрю, сработает ли это, спасибо. Я также отредактирую вопрос, чтобы указать, как я его вызываю на контроллере –
Я пробовал этот метод canvas, но без использования его с 'repeat: all', он только печатает его содержимое на первой странице, он не повторите на других страницах, так что это не решит мою проблему. Я не знаю, как это сделал @Bramski, но способ, которым он поставил свой собственный ответ, не должен даже решить проблему для него. –
Это может показаться глупым на данный момент, но, возможно, стоит попробовать использовать 'repeat: all', обернутый вокруг метода холста, например: http://stackoverflow.com/a/2919309/1026898. – Ecnalyr