leonel
leonel

Reputation: 10214

Rails 3 and PDFKit, how can I convert an HTML file into a landscape orientation PDF?

I can convert HTML pages into PDF documents well. The problem is, I don't know how to convert the HTML file into a landscape orientation PDF. Is there a way to set that in the controller?

From the controller...

def pdf_customer_shipments
  @customer = Customer.find(params[:id])
  @shipments = Shipment.where("customer_id = ? AND status = 'Open'", @customer.id)
  render :layout => 'pdf'
end

Upvotes: 8

Views: 5571

Answers (3)

Piioo
Piioo

Reputation: 759

You need a meta tag in you html file:

...
<head>
  <meta name="pdfkit-orientation" content="Landscape"/>
</head>
...

Then the PDF is in landscape orientation.

Upvotes: 6

John Goodman
John Goodman

Reputation: 1098

In case this helps, I am using PDFKit and can render the pdf in landscape using:

respond_to do |format|
  format.html
  format.pdf {
    html = render_to_string(:layout => false , :action => "my_page.html.haml")
    kit = PDFKit.new(html, :orientation => 'Landscape')
    kit.stylesheets << "#{Rails.root}/public/stylesheets/views/pdf.css"
    send_data(kit.to_pdf, :filename => "some_name.pdf", :type => 'application/pdf')
    return # to avoid double render call
  }
end

I got the orientation part from here: https://github.com/pdfkit/pdfkit/issues/12

Upvotes: 9

Paul Simpson
Paul Simpson

Reputation: 2514

PDFKit should accept options for wkhtmltopdf, so you should be able to render in landscape mode by using this:

def pdf_customer_shipments   
  @customer = Customer.find(params[:id])   
  @shipments = Shipment.where("customer_id = ? AND status = 'Open'", @customer.id
  render :layout => 'pdf', :orientation => 'Landscape' 
end 

Upvotes: 0

Related Questions