wkhtmltopdf(pdfkit)无法连接到任何X显示器

时间:2018-08-10 13:26:45

标签: django nginx uwsgi wkhtmltopdf

我正在尝试将wkhtmltopdf与Django,nginx,uwsgi一起使用 它非常适合在使用manage.py runserver运行的开发环境中运行 但是当与nginx ans uwsgi一起使用时,出现此错误:

wkhtmltopdf exited with non-zero code 1. error:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-isp'
qt.qpa.screen: QXcbConnection: Could not connect to display 
Could not connect to any X display.

Exception Location:     /home/isp/Env/isp/lib/python3.6/site-package/pdfkit/pdfkit.py in to_pdf, line 159

命令:

wkhtmltopdf http://www.google.com output.pdf

在终端上完美运行 我用这个向导来部署Django应用     https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-16-04#setting-up-the-uwsgi-application-server

我认为它与virtualenv有关,我尝试使用此包装器 https://github.com/JazzCore/python-pdfkit/wiki/Using-wkhtmltopdf-without-X-server

但仍然存在相同的错误

mycode:

import pdfkit
    pdfkit.from_file("./invoices/invoice"+str(booking_id)+"-"+str(invoice_id)+".html", "invoices/invoice_initial"+str(booking_id)+"-"+str(invoice_id)+".pdf")

4 个答案:

答案 0 :(得分:1)

解决方案: 而不是使用

apt-get install wkhtmltopdf

我从发布页面下载了最新版本,现在一切正常

答案 1 :(得分:1)

official page

下载或获取最新版本的链接

sudo wget -p ./ https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb

sudo apt install ./wkhtmltox_0.12.6-1.bionic_amd64.deb

它在 Ubuntu 18.04 上对我有用

答案 2 :(得分:0)

我认为这与X11转发有关。您需要在服务器上启用它。

检出this

答案 3 :(得分:0)

您有两种方法可以解决此问题。

1)np.random.seed(0)

2)使用pyvirtualdisplay。

安装:

os.system("xvfb-run wkhtmltopdf %s %s"%(INPUT_URL, OUTPUT_FILE_PATH))

比:

 $ sudo apt-get install xvfb 
 $ sudo pip install pyvirtualdisplay