Rails 3和PDFKit,如何将HTML文件转换为横向PDF?

leo*_*nel 7 ruby ruby-on-rails pdfkit ruby-on-rails-3

我可以很好地将HTML页面转换为PDF文档.问题是,我不知道如何将HTML文件转换为横向PDF.有没有办法在控制器中设置它?

从控制器......

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

Joh*_*man 8

如果这有帮助,我使用PDFKit并可以使用以下方式渲染PDF格式:

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
Run Code Online (Sandbox Code Playgroud)

我从这里得到了方向部分:https://github.com/pdfkit/pdfkit/issues/12


Pii*_*ioo 6

您需要在html文件中使用元标记:

...
<head>
  <meta name="pdfkit-orientation" content="Landscape"/>
</head>
...
Run Code Online (Sandbox Code Playgroud)

然后PDF是横向的.


Pau*_*son 0

PDFKit 应该接受 wkhtmltopdf 的选项,因此您应该能够使用以下命令在横向模式下渲染:

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 
Run Code Online (Sandbox Code Playgroud)