2010-08-12 72 views
5

我已经使用RVM(必须手动复制wkhtmltopdf二进制文件)在我的Rails 3应用程序中设置PDFKit。当我尝试渲染页面的PDF版本,我得到这个错误:Rails 3 - 使用PDFKit创建PDF文档时wkhtmltopdf命令失败

 
RuntimeError in AgenciesController#show 

command failed: ["lib/wkhtmltopdf/wkhtmltopdf", "--disable-smart-shrinking", "--page-size", "Letter", "--margin-top", "0.75in", "--margin-right", "0.75in", "--margin-bottom", "0.75in", "--margin-left", "0.75in", "--encoding", "UTF-8", "--quiet", "\n.......\n", "-"] 

以下是我的applicaition.rb:

 
    config.middleware.use "PDFKit::Middleware" 
    PDFKit.configure do |config| 
    config.wkhtmltopdf = 'lib/wkhtmltopdf/wkhtmltopdf' 

    end 

为什么发生这种情况的想法?我该如何解决它?

在控制台中,我注意到了这个消息:

 
(sometimes it will work just to ignore this error with --ignore-load-errors) 

在哪里调用该开关? wkhtmltopdf似乎在命令行上工作正常,我可以做类似“./wkhtmltopdf http://www.google.com google.pdf”并生成PDF。

感谢您的帮助,

彼得

+0

我试着config.wkhtmltopdf绝对路径,重新启动服务器,但得到了同样的错误。 – futureshocked 2010-08-12 13:38:46

+0

你有没有设法解决它?我在'my_app_path/lib/wkhtmltopdf'上存储了可执行文件就像你说的那样从终端工作。但在生产模式下运行Webrick服务器时不起作用。任何帮助,将不胜感激。谢谢 – TheMouseMan 2014-01-13 11:41:31

+0

不,我放弃了这种方法,因为它不适合我正在尝试做的事情,而是去了Prawn(https://github.com/prawnpdf/prawn)。 – futureshocked 2014-01-14 02:00:42

回答

5

从源代码来看,你可以设置pdfkit选项。我想下面的工作:

PDFKit.configure do |config| 
    config.default_options[:ignore_load_errors] = true 
end 

(我没有,虽然测试)

+1

这工作,以便应用程序不会崩溃时,我用.pdf加载页面。但是,PDF页面变得空白。可能是什么原因造成的? – futureshocked 2010-08-13 10:57:39

+0

我猜''wkhtmltopdf'失败。不知道该怎么做,但。 – troelskn 2010-09-02 09:26:38

1

我使用这个技巧。

config.wkhtmltopdf = `which wkhtmltopdf`.gsub(/\n/, '') 

which which command returns a new line at end。

0

既然你已经安装了wkhtmltopdf,它似乎工作,也许给wicked_pdf一枪。它在我的Ruby 1.9 Rails 3应用程序中非常适合我。它同样简单,但通过让您在需要pdf时明确使用render :pdf => 'my_template',您可以更好地控制可作为pdf格式呈现的内容。当然,如果你愿意,你可以把它放在一个responds_to块中。

ps Incase我不清楚,wicked_pdf也使用wkhtmltopdf。

4

我在谷歌搜索它,并在博客上找到答案。

解决方案是在这里:

安装依赖

$sudo aptitude install openssl build-essential xorg libssl-dev 

对于64位操作系统上运行一个个以下命令:

$ sudo wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2 
$ sudo tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2 
$ sudo mv wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf 
$ sudo chmod +x /usr/local/bin/wkhtmltopdf 

最后,回到Rails app/config/initializer文件夹中,并创建新的文件pdfkit.rb并粘贴以下代码:

PDFKit.configure do |config| 
    config.wkhtmltopdf = '/usr/local/bin/wkhtmltopdf' if Rails.env.production? 
end 

就是这样。现在您的pdf文件将被下载。另请访问以获取更多信息:http://www.stormconsultancy.co.uk/blog/development/generating-pdfs-in-rails-with-pdfkit-and-deploying-to-a-server/

谢谢。