【问题标题】:Cannot get wicked_pdf to work on heroku ? (but it works locally)无法让 wicked_pdf 在 heroku 上工作? (但它在本地工作)
【发布时间】:2011-08-28 15:06:20
【问题描述】:

按照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,但结果都一样。

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

环境是: - 轨道 3.0.7 - 红宝石 1.8.7

谢谢,

麦芽酒

【问题讨论】:

标签: ruby-on-rails-3 heroku wkhtmltopdf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      或在您的 Gemfile 中作为

      gem "wkhtmltopdf-heroku"
      

      【讨论】:

      • 我正在使用 pdfkit 生成 pdf...出于生产目的,我将您的 gem 包含在生产组中并将我的应用程序推送到 heroku,但它无法生成 pdf。我错过了什么吗?你有任何实现你的 gem 的文档吗?
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。我通过使用 wkhtmltopdf 二进制文件的 amd64 版本而不是 i386 来修复它。

        【讨论】:

          【解决方案6】:

          wicked_pdf 使用wkhtmltopdf 将 HTML 转换为 PDF(正如其名称所言)。您可以下载它的二进制文件here,并将其放在您的应用程序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 到 PDF 提供程序,您可以在其中拥有更大的灵活性,例如 RackSpace 或 Amazon EC2 中的 VPS。

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

          您可以在此处查看操作方法:http://blog.hugerepo.com/2013/04/29/how-to-create-your-own-html-to-pdf-provider/

          【讨论】:

          • 这同样适用于 pdfkit 吗?并且 gem "wkhtmltopdf-heroku" 对安装有什么帮助吗?
          猜你喜欢
          • 1970-01-01
          • 2014-01-02
          • 1970-01-01
          • 2021-04-26
          • 2013-03-29
          • 2015-02-07
          • 1970-01-01
          • 2013-08-15
          • 1970-01-01
          相关资源
          最近更新 更多