按照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上找不到与我的错误有关的任何内容。我不明白我做错了什么。
环境是: - rails 3.0.7 - 红宝石1.8.7
谢谢,
啤酒
答案 0 :(得分:8)
我最近为wkhtmltopdf二进制文件创建了一个GEM,可以在heroku上工作,而无需在自己的存储库中安装任何二进制文件。它还包含用于开发的OSX(darwin)二进制文件。它适用于PDFKit,也可能与WickedPDF一起使用
https://github.com/bradphelan/wkhtmltopdf-heroku
或在您的Gemfile中
gem "wkhtmltopdf-heroku"
答案 1 :(得分:5)
this github项目对我非常有帮助,我有它在rails 3项目中运行,感谢这个
答案 2 :(得分:4)
我能够按照此处描述的步骤https://github.com/jordan-brough/heroku-pdf制作我自己的项目副本,并且在本地和heroku上运行良好。
然后我更新了应用程序以使用rails 3.0.9。它在heroku http://heroku-pdf-3.heroku.com/上运行。您可以从here获取此项目的代码。
答案 3 :(得分:2)
为了记录,我已经体验过这在我们的舞台环境(同样的heroku设置)上完美运行的地方,但是部署到生产可以打破上面的错误(但并非总是如此)。
当发生这种情况时,重新部署工作(不明白为什么)。因为它是一个git repo,你将不得不做一个小改动,否则它将不允许你再次推动。
答案 4 :(得分:1)
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
将wkhtmltopdf二进制文件包装在虚拟X服务器环境中我更喜欢第二个选项,因为它在另一个服务器中分离PDF创建,并且不会因性能问题而损害应用程序的其余部分。
您可以在此处查看如何执行此操作:http://blog.hugerepo.com/2013/04/29/how-to-create-your-own-html-to-pdf-provider/
答案 5 :(得分:0)
我遇到了同样的问题。我通过使用whtmltopdf二进制文件的amd64版本而不是i386来修复它。