python pdfkit 使用 linux上的问题

在windows上问题不大,根据相关教程一切ok。

这里主要整理debian上的坑

IOError: wkhtmltopdf exited with non-zero code -6. error: QXcbConnection: Could not connect to display

系统上主要装三个东西 如下

apt-get install wkhtmltopdf (pdfkit依赖这个)
apt-get install xvfb  (wkhtmltopdf依赖这个,无界面运行,模拟显示设备的库,如果不装会报错python wkhtmltopdf QXcbConnection:Could not connect to display。 wkhtmltopdf exited with non-zero code -6. error)
apt-get install fonts-noto (在linux上很多系统初始是不支持中文的,这个都懂,下载安装所需依赖,如果不装中文字体不会显示或是麻花)

装了上面三个东西还用不了,xvfb这个需要启动

解决一:

运行xvfb服务, 为了避免显示设备冲突,指定一个编号,这里是 10

sudo Xvfb :10 -ac   (不是后台启动,一直挂起,如果需要自己搜索)

指定显示设备,和上面的编号一致

export DISPLAY=:10   (环境变量)
执行 pdfkit 代码

解决二:

因为我们用的Python,一般不会在系统上自己启动xvfb,Python中 pyvirtualdisplay 这个库就是xvfb的封装,安装pip install pyvirtualdisplay,

from pyvirtualdisplay import Display

display = Display()

display.start() 启动

执行pdfkit代码

display.stop() 停止

display.is_alive() 判断是否存活

当然需要也可以这样

with Display() as display:

  pdfkit 代码

 

posted on 2021-05-08 11:48  程序员小朱  阅读(288)  评论(0编辑  收藏  举报

导航