5

我使用 RVM 在我的 Rails 3 应用程序中设置了 PDFKit(必须手动复制 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.com google.pdf”的操作并生成 PDF。

谢谢你的帮助,

彼得

4

6 回答 6

5

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

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

(虽然我没有测试过)

于 2010-08-12T13:59:18.243 回答
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

最后,转到您的 railsapp/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/

谢谢。

于 2013-03-11T19:49:24.510 回答
2

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

于 2011-10-11T17:16:53.207 回答
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/ 目录为我解决了一个问题。

于 2013-01-02T12:12:05.710 回答
1

我使用了这个技巧。

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

which 命令在最后返回一个新行。

于 2010-09-21T06:05:53.657 回答
0

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

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

于 2011-04-22T15:46:00.493 回答