【问题标题】:wicked_pdf does not run on Ubuntu server : wkhtmltopdf: cannot connect to X serverwicked_pdf 不在 Ubuntu 服务器上运行:wkhtmltopdf:无法连接到 X 服务器
【发布时间】:2013-07-07 13:57: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: cannot connect to X server,但它仍然不起作用。

【问题讨论】:

    标签: ruby-on-rails wkhtmltopdf pdfkit wicked-pdf


    【解决方案1】:
    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
      

    请参阅 thisthis 以供参考。

    【讨论】:

    • 看来不用xvfb也能做到
    【解决方案2】:

    这篇文章帮助我解决了我的问题: 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 它在哪里,所以这个方法适用于邪恶的 PDF 和 PDF Kit。

    【讨论】:

    • 这对我有用。我必须在初始化程序/wicked_pdf.rb 文件中添加以下内容才能使其工作:WickedPdf.config = { :exe_path => '/path/to/wkhtmltopdf' }
    • 那是我的问题,它必须是 64 位的
    • 正如评论所说,此答案仅适用于 64 位。
    【解决方案3】:

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

    我找到了解决此问题的方法,无需伪造 X 服务器。 在最新版本的 wkhtmltopdf 中不需要 X 服务器来工作,但它不会进入官方 linux 存储库。

    适用于 Ubuntu 14.04.4 LTS(可信)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(可信)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
    

    【讨论】:

    • 这个答案只在 Ubuntu 32 位版本中对我有用。在64位下发命令时发现很多问题sudo dpkg -i wkhtmltox-0.12.2_linux-trusty-i386.deb
    • @Francisco 您将需要使用 64 位软件包 http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-trusty-amd64.deb
    • 感谢@tobygriffin 仍然需要修复临时服务器,所以我试了一下。
    • gna.org 已关闭
    猜你喜欢
    • 2012-03-25
    • 2015-08-31
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2013-08-15
    • 2012-09-10
    • 1970-01-01
    相关资源
    最近更新 更多