Используя этот гем, чтобы я мог запустить NodeJS Puppeteer из Rails:
https://github.com/Studiosity/grover
Я пытаюсь отобразить различные отчеты в формате HTML в файле PDF, чтобы пользователи могли их скачать.
При выполнении этого через промежуточное ПО у меня есть config/initializers/grover.rb
:
Grover.configure do |config|
view = ActionView::Base.new(ActionController::Base.view_paths, {})
header_template = view.render(:template => "pdf/_header", :layout => false, :spa => spa, :codigo => codigo)
footer_template = view.render(:template => "pdf/_footer", :layout => false, :doctitle => @doctitle, :spa => spa, :codigo => codigo, :page => page, :topage => topage)
config.options = {
display_url: Settings.corporativo,
format: 'A4',
margin: {
top: '0.8in',
bottom: '0.65in',
right: '0.45in',
left: '0.5in'
},
prefer_css_page_size: true, #Doesn't seem to work. Still the margins set here are the ones that rule.
display_header_footer: true,
header_template: header_template,
footer_template: footer_template,
print_background: true,
emulate_media: 'print',
cache: false,
timeout: 0
}
end
У вас есть представление о том, как я могу передать динамические параметры в эти шаблоны? Потому что установка этих шаблонов во время инициализации, насколько я могу судить, делает их статичными ...
Здесь один из моих шаблонов _footer.html.haml
:
%footer{:style => "display:flex; justify-content: space-between; font-size:6px !important; width: calc(100% - 0.75in); margin: 0 auto;"}
%span.title
#description{:style => "text-align:center;font-size: 6px;"}
- if !@codigo.nil?
= raw t('pdfkit.footer_E')
- else
= raw t('pdfkit.footer')
.pageContainer
%span.pageNumber
= "/"
%span.totalPages