1、首先,去wkhtmltopdf下载对应版本的Linux版本,地址如下:https://wkhtmltopdf.org/downloads.html

2、这里我服务器是centos 7,所以下载一个对应centos7的版本,下载得到一个rpm包。

3、接着放到服务器的某个目录底下,接着使用下面的命令:

rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm
  
  

4、接着,不出意外的报错啦,竟然少了那么多依赖包,我的天:

5、缺少相关的依赖包,所以需要安装对应的依赖包:

(1)、xorg-x11-fonts-75dpi依赖包:

yum install xorg-x11-fonts-75dpi.noarch
  
  

(2)、xorg-x11-fonts-Type1依赖包:

yum install xorg-x11-fonts-Type1.noarch
  
  

(3)、libjpeg依赖包:

yum install libjpeg
  
  

(4)、libXrender依赖包:

yum install libXrender
  
  

(5)、libXext依赖包:

yum install libXext
  
  

(6)、好像不用在安装其他的了,因为此时我再次执行命令:

rpm -ivh wkhtmltox-0.12.5-1.centos7.x86_64.rpm
  
  

(7)、接下来试着执行一下命令,把百度这个网页转为pdf,命令如下:

wkhtmltopdf http://www.baidu.com.com test.pdf
  
  

(8)、竟然是这样子的,但是也成功了:

6、接着呢,找到这个执行命令的路径,我这边是存放在这底下了:

/usr/local/bin/wkhtmltopdf
  
  

7、接着,我把这个路径配置到Django的settings.py中:

WKHTMLTOPDF_INSTALL_PATH = '/usr/local/bin/wkhtmltopdf'
  
  

在代码中就可以利用:

config = pdfkit.configuration(wkhtmltopdf=settings.WKHTMLTOPDF_INSTALL_PATH)
  
  

8、不出意外又报错了,转pdf时调用时候创建目录报错了,权限拒绝,/lib64/python3.6/os.py in makedirs, line 220:

[Errno 13] Permission denied:'media'

  
  

9、接着发现是权限拒绝的原因是因为部署Django项目,连接到apache服务的用户组是apache,而导出时候makedirs的时候,那个目录是root用户组权限,因此需要把总的那个目录还有底下的用户组改为apache,我这边导出的时候创建的总目录为media,使用以下命令即可:

chown apache:apache -R /project/student/media
  
  

10、接着,导出下来的pdf中文竟然是乱码,好吧,Linux底下缺少一个字体文件simsun.ttc,网上都说在C:\Windows\Fonts\simsun.ttc这个目录底下,我都找不到。。。所以只能去网上找了一个,之后放到Linux上的字体目录底下,使用下面命令,之后放到simsun底下,其中我放了两个相关的字体:


  
  
  1. cd /usr/share /fonts/
  2. mkdir simsun

11、这样就不会出现乱码问题了,中文也就显示出来了。

以上内容仅供大家学习参考,谢谢!