14

我正在尝试在我的产品服务器上使用 wicked_pdf,但它一直失败:

RuntimeError (Failed to execute:
"/usr/bin/wkhtmltopdf" -q        "file:////tmp/wicked_pdf20130709-23109-1adqx5g.html" "/tmp/wicked_pdf_generated_file20130709-23109-1ic5dbe.pdf"
Error: PDF could not be generated!
 Command Error: wkhtmltopdf: cannot connect to X server
):
  app/controllers/contrats_controller.rb:15:in `block (2 levels) in show'
  app/controllers/contrats_controller.rb:11:in `show'

我试图遵循这个答案:wkhtmltopdf:无法连接到 X 服务器,但它仍然无法正常工作。

4

3 回答 3

15

这篇文章帮助我解决了我的问题: http: //www.stormconsultancy.co.uk/blog/development/generating-pdfs-in-rails-with-pdfkit-and-deploying-to-a-server/

我在这里复制这篇文章中帮助我安装它的步骤:

# first, installing dependencies
sudo aptitude install openssl build-essential xorg libssl-dev

# for 64bits OS
wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2
tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
mv wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf
chmod +x /usr/local/bin/wkhtmltopdf

他还创建了一个初始化程序来告诉 pdfKit 它在哪里,所以这个方法适用于 wicked PDF 和 PDF Kit。

于 2013-07-12T08:37:48.500 回答
11

解决了这个问题https://stackoverflow.com/a/34947479/5320149

我找到了在没有假 X 服务器的情况下解决这个问题的方法。在最新版本的 wkhtmltopdf 中不需要 X 服务器来工作,但它不会进入官方 linux 存储库。

Ubuntu 14.04.4 LTS (trusty) i386 的解决方案

$ sudo apt-get install xfonts-75dpi
$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-i386.deb
$ sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-i386.deb
$ wkhtmltopdf http://www.google.com test.pdf

Ubuntu 14.04.4 LTS (trusty) amd64 的解决方案

$ sudo apt-get install xfonts-75dpi
$ wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
$ sudo dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
$ wkhtmltopdf http://www.google.com test.pdf
于 2016-01-22T13:14:22.143 回答
8
  1. 验证您已xvfb安装,或使用apt-get install xvfb.

  2. 创建一个名为wkhtmltopdf.sh并添加以下内容的文件:

    xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf $*
    

    更改尺寸 (640x480x16) 以匹配您希望它模拟的任何虚拟屏幕参数。

  3. 将 shell 脚本移动到/usr/bin,并设置权限:

    sudo chmod a+x /usr/bin/wkhtmltopdf.sh
    
  4. 或者,您可以在项目目录中添加符号链接:

    ln -s /usr/bin/wkhtmltopdf.sh wkhtmltopdf
    

请参阅以供参考。

于 2013-07-11T21:16:48.263 回答