eayurt
eayurt

Reputation: 1177

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?

Upvotes: 5

Views: 4089

Answers (2)

rmcsharry
rmcsharry

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

Jonathan
Jonathan

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

Related Questions