【问题标题】:Rails 3 - wkhtmltopdf command failed when using PDFKit to create PDF documentsRails 3 - 使用 PDFKit 创建 PDF 文档时 wkhtmltopdf 命令失败
【发布时间】:2023-03-15 13:52:01
【问题描述】:

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

AgenciesController#show 中的 RuntimeError 命令失败:[“lib/wkhtmltopdf/wkhtmltopdf”、“--disable-smart-shrinking”、“--page-size”、“Letter”、“--margin-top”、“0.75in”、“--右边距”、“0.75in”、“--margin-bottom”、“0.75in”、“--margin-left”、“0.75in”、“--encoding”、“UTF-8”、“- -安静”、“\n.......\n”、“-”]

以下在我的 applicaition.rb 中:

config.middleware.use "PDFKit::Middleware" PDFKit.configure 做 |config| config.wkhtmltopdf = 'lib/wkhtmltopdf/wkhtmltopdf' 结尾

一个想法为什么会发生这种情况?我该如何解决?

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

(有时它会使用 --ignore-load-errors 忽略此错误)

在哪里调用该开关? wkhtmltopdf 似乎在命令行上运行良好,我可以执行类似“./wkhtmltopdf http://www.google.comgoogle.pdf”之类的操作并生成 PDF。

感谢您的帮助,

彼得

【问题讨论】:

  • 我用绝对路径尝试了config.wkhtmltopdf,重启了服务器,还是出现了同样的错误。
  • 您设法解决了吗?我已经在my_app_path/lib/wkhtmltopdf 上存储了可执行文件,就像你说的它在终端上工作。但是当我在生产模式下运行 Webrick 服务器时不起作用。任何帮助,将不胜感激。谢谢
  • 不,我放弃了这种方法,因为它不适合我想要做的事情,而是转而使用 Prawn (github.com/prawnpdf/prawn)。

标签: ruby-on-rails wkhtmltopdf pdfkit


【解决方案1】:

从源码来看,可以在pdfkit上设置选项。我认为以下方法会起作用:

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

(虽然我没有测试过)

【讨论】:

  • 这样可以在我用 .pdf 加载页面时应用程序不会崩溃。但是,PDF 页面呈现为空白。是什么原因造成的?
  • 我猜wkhtmltopdf 失败了。不过不知道该怎么办。
【解决方案2】:

我在谷歌上搜索了一下,在博客上找到了答案。

解决方案在这里:

安装依赖项

$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/

谢谢。

【讨论】:

    【解决方案3】:

    你可能想看看这个插件wicked pdf

    【讨论】:

      【解决方案4】:

      我使用了这个技巧。

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

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

      【讨论】:

        【解决方案5】:

        我在我的 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/ 目录中,这为我解决了一个问题。

        【讨论】:

          【解决方案6】:

          由于您已经安装了 wkhtmltopdf 并且它似乎可以正常工作,因此不妨试一试 wicked_pdf。它在我的 Ruby 1.9 Rails 3 应用程序中非常适合我。它同样简单,但通过让您在需要 pdf 时显式使用 render :pdf => 'my_template',让您对可以呈现为 pdf 的内容有更多的控制。当然,如果您愿意,您可以将其放在 responds_to 块中。

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

          【讨论】:

            猜你喜欢
            • 2011-06-08
            • 1970-01-01
            • 2013-01-04
            • 2019-12-31
            • 2014-01-04
            • 1970-01-01
            • 2011-08-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多