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底下,其中我放了两个相关的字体:
-
cd
/usr/share
/fonts/
-
mkdir simsun
11、这样就不会出现乱码问题了,中文也就显示出来了。
以上内容仅供大家学习参考,谢谢!