“错误:无法生成PDF!”与WickedPDF

时间:2013-02-13 10:56:49

标签: ruby-on-rails wicked-pdf

错误:

RuntimeError in BillsController#printing

Failed to execute:
"/usr/local/bin/wkhtmltopdf" -q        "file:////var/folders/j5/2wx0qdjj7kl7vbvq3m2z4rj00000gn/T/wicked_pdf20130213-41259-x9dcb5.html" "/var/folders/j5/2wx0qdjj7kl7vbvq3m2z4rj00000gn/T/wicked_pdf_generated_file20130213-41259-mg4iqp.pdf" 
Error: PDF could not be generated!

BillsController:

  # GET /bills
  # GET /bills.json
  def print
    respond_to do |format|
      format.html 
      format.pdf do
        render :pdf => "rechnung_id",
               :layout => "printing.pdf",
               :show_as_html => params[:debug]
      end
    end
  end

作为视图,我创建了一个printing.html.erb和一个printing.pdf.erb - 并尝试了两者。

我已经安装了wkhtmltopdf作为二进制和gem。当我尝试使用gem时(注释掉这一行:

WickedPdf.config = { :exe_path => '/usr/local/bin/wkhtmltopdf'}
事情似乎崩溃了,没有任何反应...... 当我使用二进制文件时,我会在顶部显示错误。 我的宝石版本是: wicked_pdf(0.9.4) 和wkhtmltopdf-binary(0.9.9.1)。

我正在寻求帮助 - 这就是我已经尝试过的:

  1. “捆绑更新”和“捆绑安装”
  2. 在版本9.9中安装wkhtmltopdf
  3. 添加了“Mime :: Type.register”application / pdf“,:pdf”
  4. 编辑: 如果我使用终端并输入“wkhtmltopdf www.myHomepage.info myhomepage.pdf”,它可以正常工作。 “哪个wkhtmltopdf”给了我“/ usr / bin / wkhtmltopdf”的路径,但是如果我想用一个,它打开“wkhtmltopdf_darwin_386”并且网站冻结..

1 个答案:

答案 0 :(得分:2)

现在我解决了这个问题。

我将控制器方法更改为:

 def printing
    @bills = Bill.find(params[:id])

    respond_to do |format|
      format.html
      format.pdf do
        render :pdf => "bill_#{@bills.id}",
               :wkhtmltopdf => '/usr/bin/wkhtmltopdf',
               :template => '/bills/printing.pdf.erb',
               :disposition => "inline"
               #:save_to_file => Rails.root.join('pdf', "rechnung_#{@bills.id}.pdf")
      end
    end
  end

我不得不在应用程序中删除WickedPDF作为中间件.rb:

require 'wicked_pdf'
config.middleware.use WickedPdf::Middleware, {}

现在它按预期工作了。