使用PDFKit创建PDF文档时,Rails 3 - wkhtmltopdf命令失败

时间:2010-08-12 13:38:15

标签: ruby-on-rails wkhtmltopdf pdfkit

我在Rails 3应用程序中使用RVM设置了PDFKit(必须手动复制wkhtmltopdf二进制文件)。当我尝试渲染页面的PDF版本时,我收到此错误:

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", "-"]

以下是我的申请.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。

感谢您的帮助,

彼得

6 个答案:

答案 0 :(得分:5)

从源代码判断,您可以在pdfkit上设置选项。我认为以下内容可行:

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

(虽然我没试过)

答案 1 :(得分: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/

感谢。

答案 2 :(得分:2)

您可能需要查看此插件wicked pdf

答案 3 :(得分:1)

我用过这个黑客。

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

which命令在结尾处返回一个新行。

答案 4 :(得分:1)

我在我的ubuntu操作系统上遇到了类似的问题。但随后使用https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF中的说明重新安装了wkhtmltopdf。

http://code.google.com/p/wkhtmltopdf/downloads/detail?name=wkhtmltopdf-0.9.9-static-i386.tar.bz2&can=2&q=下载二进制文件并将其放在/ usr / local / bin /目录中,这解决了我的问题。

答案 5 :(得分:0)

由于你已经安装了wkhtmltopdf并且它似乎正在运行,可能会给wicked_pdf一个机会。它在我的Ruby 1.9 Rails 3应用程序中对我很有用。它同样简单,但是当你想要一个pdf时,你可以通过明确地使用render :pdf => 'my_template'来更好地控制可以作为pdf呈现的内容。当然,如果您愿意,可以将它放在responds_to块中。

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