Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WickedPDF header rendering

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?

like image 924
eayurt Avatar asked Jan 14 '13 11:01

eayurt


2 Answers

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!

like image 169
Jonathan Avatar answered Nov 18 '22 20:11

Jonathan


The solution for me was noted on this issue.

Make sure you have

<!DOCTYPE html>

at the top of your header template file.

like image 30
rmcsharry Avatar answered Nov 18 '22 20:11

rmcsharry