5

按照https://github.com/jordan-brough/heroku-pdf上的指南,我设法让 wicked_pdf 在本地工作并按预期创建 PDF。但是,一旦我推送到heroku,每次我调用pdf时,应用程序都会在一段时间后崩溃

日志给了我这个:

2011-05-19T06:36:56+00:00 app[web.1]: Started GET "/authors/cash_payment_receipt/4dd4aff0a2d5a5000100000c.pdf" for XXX.XXX.XXX.XXX at Wed May 18 23:36:56 -0700 2011
2011-05-19T06:36:56+00:00 heroku[router]: Error H13 (Connection closed without response) -> GET xxx.xxxx.com/authors/cash_payment_receipt/4dd4aff0a2d5a5000100000c.pdf dyno=web.1 queue=0 wait=0ms service=0ms bytes=0
2011-05-19T06:36:56+00:00 app[web.1]: !! Unexpected error while processing request: PDF could not be generated!
2011-05-19T06:36:56+00:00 app[web.1]: /app/.bundle/gems/ruby/1.8/gems/wkhtmltopdf-0.1.2/bin/wkhtmltopdf_linux_386: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

我将 wkhtmltopdf bin 添加到我的 rails-root/bin 目录,检查权限,一切正常。我首先尝试了 0.10rc2,然后又回到了 0.9.9,但结果都一样。

我在谷歌上找不到与我的错误相关的任何内容。我看不出我做错了什么。

环境是: - rails 3.0.7 - ruby​​ 1.8.7

谢谢,

啤酒

4

6 回答 6

8

我最近为 wkhtmltopdf 二进制文件创建了一个 GEM,可以在 heroku 上工作,而无需在自己的存储库中安装任何二进制文件。它还包含用于开发的 OSX ( darwin ) 二进制文件。它与 PDFKit 一起使用,可能也应该与 WickedPDF 一起使用

https://github.com/bradphelan/wkhtmltopdf-heroku

或在您的 Gemfile 中作为

gem "wkhtmltopdf-heroku"
于 2011-09-09T06:46:54.460 回答
5

这个 github项目对我非常有帮助,多亏了这个,我让它在 rails 3 项目中运行

于 2011-05-21T07:52:11.343 回答
4

我能够按照此处描述的步骤https://github.com/jordan-brough/heroku-pdf制作我自己的项目副本,它在本地和 heroku 上运行良好。

然后我更新了应用程序以使用 rails 3.0.9。它在 heroku http://heroku-pdf-3.heroku.com/上运行。你可以从这里为这个项目获取我的代码。

于 2011-07-14T23:55:32.027 回答
2

作为记录,我已经体验过这在我们的舞台环境(相同的 heroku 设置)上完美运行的地方,但是部署到生产可能会因上述错误而中断(但并非总是如此)。

发生这种情况时,重新部署工作(不知道为什么)。因为它是一个 git repo,你必须做一个小的改变,否则它不会让你再次推送。

于 2011-12-21T20:22:27.417 回答
1

wicked_pdf 用于wkhtmltopdf将 HTML 转换为 PDF(顾名思义)。您可以在此处下载其二进制文件,并将其放在您的应用程序bin文件夹中。

您还需要创建一个wicked_pdf.rb指向二进制文件的初始化程序:

# config/initializers/wicked_pdf.rb

WickedPdf.config = {
  :exe_path => Rails.root.join('bin', 'wkhtmltopdf-amd64').to_s,
}

但是,如果您需要将图像输入到 PDF 文件中,则需要运行 X 服务器。由于您无法在 Heroku 中运行 X 服务器,因此有两种方法:

  • 用于xvfb在虚拟 X 服务器环境中包装您的 wkhtmltopdf 二进制文件
  • 在另一台服务器上安装 HTML to PDF 提供程序,您可以在其中拥有更大的灵活性,例如 RackSpace 或 Amazon EC2 中的 VPS。

我更喜欢第二种选择,因为它会在另一台服务器中分离 PDF 创建,并且不会因性能问题而损害应用程序的其余部分。

你可以在这里看到如何做到这一点:http: //blog.hugerepo.com/2013/04/29/how-to-create-your-own-html-to-pdf-provider/

于 2013-04-30T18:59:34.360 回答
0

我有同样的问题。我通过使用 wkhtmltopdf 二进制文件的 amd64 构建而不是 i386 来修复它。

于 2012-08-25T10:26:06.117 回答