Reputation: 1177
I user mac osx and try my html file to pdf file via wickedpdf. I want to put a string every page of my pdf file but I have a problem about header which is not rendering.
My wickedpdf method is,
format.pdf do
render :pdf => '#{@examination.name}.pdf',
:disposition => 'inline',
:layout => 'examination_session_pdf.html.erb',
:no_background => true,
:header =>{:html =>{:template=>'shared/pdf/header.pdf.erb'}}
end
and the header file contains just "hello" string or nothing. However, every time I see this error,
can't convert nil into String
The problem line is ":header =>{:html =>{:template=>'shared/pdf/header.pdf.erb'". In addition, I cannot see any logs about rendering the header page on the console.
How can I fix it?
Upvotes: 5
Views: 4089
Reputation: 5552
The solution for me was noted on this issue.
Make sure you have
<!DOCTYPE html>
at the top of your header template file.
Upvotes: 3
Reputation: 85
I hit the exact same problem earlier today!
This is what Ive done to get it to work instead
format.pdf do render :pdf => "#{@inv.invno}.pdf", :template => "inv/show.pdf", :layout =>'pdf', :header => { :content => render_to_string({:template => 'inv/header.pdf.erb'})}, :footer => { :content => render_to_string({:template => 'inv/footer.pdf.erb'})}, :margin => { :top => 38, :bottom => 35} end
You will see Ive actually used the render_to_string and then stuck the result in to the header or footer via :content. This works very well for me.
You can ignore the :margin section as Im just using that to space things out nicely as the header and footers both contain graphics.
Hope this helps!
Upvotes: 6