Злое фоновое изображение страницы PDF с pdf_from_string

Мне нужно добавить фоновое изображение в сгенерированный PDF-файл с помощью метода pdf_from_string.

это мой код

pdf = WickedPdf.new.pdf_from_string(html,
           header: {
                content: render_to_string('pdf/pdf_header.html.erb', layout: 'pdf_layout.html.erb')
           },
           footer: {
                content: render_to_string('pdf/pdf_footer.html.erb', layout: 'pdf_layout.html.erb')
           },
           background: true,
           save_to_file: Rails.root.join("pdfs","#{pdf_name}.pdf"),
           save_only: true
        )

верхний и нижний колонтитулы работают нормально, но я не нашел способа добавить параметр фонового изображения, любая помощь приветствуется.

🤔 А знаете ли вы, что...
Ruby on Rails активно использует принцип DRY (Don't Repeat Yourself), что способствует уменьшению дублирования кода.


489
1

Ответ:

Решено

Я решил проблему, используя метод render_to_string и передав содержимое HTML как локальные в шаблон, как показано ниже:

pdf = WickedPdf.new.pdf_from_string(
        render_to_string('pdf/pdf_full_page.html.erb', layout:'pdf_layout.html.erb', locals: { content: html}),
           header: {
                content: render_to_string('pdf/pdf_header.html.erb', layout: 'pdf_layout.html.erb')
           },
           footer: {
                content: render_to_string('pdf/pdf_footer.html.erb', layout: 'pdf_layout.html.erb')
           },
           layout: 'pdf_layout.html.erb',
           debug: true,
           background: true,
           no_background: false,
           save_to_file: Rails.root.join("pdfs","#{pdf_name}.pdf"),
           save_only: true
        )

pdf_full_page.html.erb Код просмотра:

<!DOCTYPE html>
<html lang = "en">
<head>
    <meta charset = "UTF-8">
    <title>PDF Full page</title>
</head>
<body>
    <%= content.html_safe %>
</body>
</html>

Я надеюсь, что это поможет кому-то еще