页脚 html 内容未在 wicked_pdf + rails 中打印
footers html content is not getting printed in wicked_pdf + rails
我正在使用 wicked_pdf 为我的 rails 应用程序生成 pdf。
我正在尝试在生成的 pdf 的页脚处呈现动态 html 内容。
我在控制器中实现了以下代码:
#app/controllers/receipts_controller.rb
def generate_receipt
html = render_to_string(:action => 'print_receipt',
:layout => false)
pdf = WickedPdf.new.pdf_from_string(html,
:encoding => 'UTF-8',
:page_size => 'A4',
:orientation => 'Portrait',
#:footer => { :content => "This is my footer content."},
:footer => { :html => { :template => 'footer.html.erb' } } )
send_data(pdf, :filename => get_file_name, :disposition => 'attachment')
end
如果我只使用静态内容(检查上面的评论部分),那么它会按预期工作。
但它无法从提供的模板位置加载页脚内容。
我的页脚位于:
#app/views/receipts/footer.html.erb
<div class='rec-foot'> This is my footer content (this is dynamic) </div>
我的打印模板是这样的:
#app/views/receipts/print_receipt.html.erb
<htmL>
<head>
<%= wicked_pdf_stylesheet_link_tag "wicked_pdf" %>
</head>
<body>
<!--- my pdf page content goes here -->
</body>
</html>
# app/assets/stylesheets/wicked_pdf.css
.rec-foot{
font-weight: bold;
text-align: center;
}
问题:未为动态 html 内容呈现页脚部分。
我认为 :template
对您不起作用,因为您使用的是 pdf_from_string
(来源:footer notes 附近的注释行)
我们通过在 app/models/pdf_builder.rb:
中做类似的事情来使用 :content
:footer: {
content: { footer_html }
}
然后定义:
def footer_html
ERB.new(pdf_template).result(binding)
end
def pdf_template
File.read("full/path/of/your/file.html.erb")
end
我们在 app/models/pdf_builder.rb 中初始化我们需要在 /app/views/pdf_footer.en.html.erb
中动态填充的任何信息
您可以直接将您的文件添加到 rails
提供的 render_to_string
方法中。
例如。 :footer: {
content: render_to_string('pdf_footer.html.erb', layout: 'pdf_layout.html.erb')
}
wicked_pdf
覆盖 render_to_string
方法,因此它也支持其所有默认选项。
我正在使用 wicked_pdf 为我的 rails 应用程序生成 pdf。 我正在尝试在生成的 pdf 的页脚处呈现动态 html 内容。
我在控制器中实现了以下代码:
#app/controllers/receipts_controller.rb
def generate_receipt
html = render_to_string(:action => 'print_receipt',
:layout => false)
pdf = WickedPdf.new.pdf_from_string(html,
:encoding => 'UTF-8',
:page_size => 'A4',
:orientation => 'Portrait',
#:footer => { :content => "This is my footer content."},
:footer => { :html => { :template => 'footer.html.erb' } } )
send_data(pdf, :filename => get_file_name, :disposition => 'attachment')
end
如果我只使用静态内容(检查上面的评论部分),那么它会按预期工作。 但它无法从提供的模板位置加载页脚内容。
我的页脚位于:
#app/views/receipts/footer.html.erb
<div class='rec-foot'> This is my footer content (this is dynamic) </div>
我的打印模板是这样的:
#app/views/receipts/print_receipt.html.erb
<htmL>
<head>
<%= wicked_pdf_stylesheet_link_tag "wicked_pdf" %>
</head>
<body>
<!--- my pdf page content goes here -->
</body>
</html>
# app/assets/stylesheets/wicked_pdf.css
.rec-foot{
font-weight: bold;
text-align: center;
}
问题:未为动态 html 内容呈现页脚部分。
我认为 :template
对您不起作用,因为您使用的是 pdf_from_string
(来源:footer notes 附近的注释行)
我们通过在 app/models/pdf_builder.rb:
中做类似的事情来使用:content
:footer: {
content: { footer_html }
}
然后定义:
def footer_html
ERB.new(pdf_template).result(binding)
end
def pdf_template
File.read("full/path/of/your/file.html.erb")
end
我们在 app/models/pdf_builder.rb 中初始化我们需要在 /app/views/pdf_footer.en.html.erb
中动态填充的任何信息您可以直接将您的文件添加到 rails
提供的 render_to_string
方法中。
例如。 :footer: {
content: render_to_string('pdf_footer.html.erb', layout: 'pdf_layout.html.erb')
}
wicked_pdf
覆盖 render_to_string
方法,因此它也支持其所有默认选项。