django(六)使用wkhtmltopdf将网页导出PDF

简介: 如题,我需要使用python 将 网页 转成PDF文件,这里会用到wkhtmltopdf我这里使用的是centos服务器。(使用ubuntu事会少很多,别问我为什么不用,我的web项目使用的是PHP,相对来说,centos部署web项目要比ubuntu要好)Python需要用到扩展 pdfkit

如题,我需要使用python 将 网页 转成PDF文件,这里会用到wkhtmltopdf

我这里使用的是centos服务器。(使用ubuntu事会少很多,别问我为什么不用,我的web项目使用的是PHP,相对来说,centos部署web项目要比ubuntu要好)

Python需要用到扩展 pdfkit

一:安装pdfkit

复制代码

pip install pdfkit

在python代码中执行:

arduino

复制代码

import pdfkit
pdfkit.from_url('https://www.baidu.com/')

报错:

arduino

复制代码

OSError at /outHtmlToPdf
No wkhtmltopdf executable found: "b''"
If this file exists please check that this process can read it or you can pass path to it manually in method call, check README. Otherwise please install wkhtmltopdf -

进入下一步->

二:安装 wkhtmltopdf

Centos命令:

复制代码

yum install wkhtmltopdf

ubuntu命令:

复制代码


         

在python代码中执行:

arduino

复制代码

import pdfkit
pdfkit.from_url('https://www.baidu.com/')

报错:

vbnet

复制代码

wkhtmltopdf: cannot connect to X server
You will need to run wkhtmltopdf within a "virtual" X server.
Go to the link below for more information
https://github.com/JazzCore/python-pdfkit/wiki/Using-wkhtmltopdf-without-X-server

进入下一步->

三:安装 xvfb

Centos 命令:

vbscript

复制代码

yum install xorg-x11-server-Xvfb

ubuntu 命令:

arduino

复制代码

apt-get install xvfb

四:配置服务器访问(centos/ubuntu)

在 /usr/bin/ 目录下生成脚本 wkhtmltopdf.sh 并写入命令

Centos:

bash

复制代码

sudo vim /usr/bin/wkhtmltopdf.sh

文件输入:

ini

复制代码

#! /usr/bin/bash
xvfb-run -a --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf -q $*

Ubuntu:

bash

复制代码

sudo vim /usr/bin/wkhtmltopdf.sh

文件输入:

javascript

复制代码

#! /usr/bin/bash
echo -e '#!/bin/bash\nxvfb-run -a --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf -q $*' > /usr/bin/wkhtmltopdf.sh

文件输入的内容,一定要严格按照我这里的输入,否则可能会出现下边我出现的bug

五:更改文件权限并创建软连接(快捷方式)

bash

复制代码

chmod a+x /usr/bin/wkhtmltopdf.sh
ln -s /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf

六:测试一下:

在Linux终端中输入:

arduino

复制代码

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

生成成功,即代表wkhtmltopdf 安装成功。

原以为到此就结束了,但是我还是太年轻。

当我执行完上边的所有步骤之后,执行代码:

arduino

复制代码

import pdfkit
pdfkit.from_url('https://www.baidu.com/')

报错:

image.png

lua

复制代码

OSError at /outHtmlToPdf
[Errno 8] Exec format error: '/usr/local/bin/wkhtmltopdf'

这里我要事先说明一下:/usr/local/bin/wkhtmltopdf这个软连接文件中,我里边写的内容是:

css

复制代码

xvfb-run -a --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf -q $*

然后,经过第六部的测试之后没有问题。我就认为没有问题。

但是上边的报错明确告诉我,有问题的是/usr/local/bin/wkhtmltopdf这个文件。

为什么会报这个错呢?我百思不得其解。

百度了一下:一般报[Errno 8] Exec format error:这个错误的,都是因为在文件开头没有添加:

javascript

复制代码

#! /usr/bin/env python3

的原因。

但是 /usr/local/bin/wkhtmltopdf这个文件 这个文件并不是 python 文件啊。

寻根溯源一下:

/usr/local/bin/wkhtmltopdf文件是/usr/bin/wkhtmltopdf.sh的软连接文件,一般在写.sh执行文件的时候,都会在文件开头添加一句:

javascript

复制代码

#! /usr/bin/bash

我就在 /usr/local/bin/wkhtmltopdf 文件开头添加了上边的语句:现在文件内容如下:

ini

复制代码

#! /usr/bin/bash
xvfb-run -a --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf -q $*

然后在执行代码:

arduino

复制代码

import pdfkit
pdfkit.from_url('https://www.baidu.com/')

然后,竟然好用了……

这玩意是真的坑……

八:中文乱码问题

解决中文乱码问题

复制代码

yum groupinstall Fonts -y

以上大概就是 我在django框架中 使用 wkhtmltopdf的基本情况。

有好的建议,请在下方输入你的评论。

目录
相关文章
|
3月前
|
Web App开发 JavaScript 前端开发
网页VUE纯前端在线预览编辑Office,支持doc/docx、xls/xlsx、ppt/pptx、pdf等格式
随着互联网技术的不断发展,越来越多的企业开始采用在线办公模式,微软Office Word 是最好用的文档编辑工具,然而doc、docx、xls、xlsx、ppt、pptx等格式的Office文档是无法直接在浏览器中直接打开的,如果可以实现Web在线预览编辑OffIce,肯定会还带来了更高效、便捷的办公体验,为我们的工作带来了更多可能性。
558 0
|
7天前
|
人工智能 Python
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
25 0
|
1月前
|
数据采集 移动开发 前端开发
springboot使用html模版导出pdf文档
springboot使用html模版导出pdf文档
|
2月前
使用Itext导出PDF
使用Itext导出PDF
24 0
|
2月前
|
XML 持续交付 开发工具
SAPGUI 里 ABAP 代码导出成 PDF 格式的隐藏小技巧
SAPGUI 里 ABAP 代码导出成 PDF 格式的隐藏小技巧
27 0
|
2月前
|
测试技术 数据处理 Python
测试报告导出PDF和excel的方法
测试报告导出PDF和excel的方法
|
3月前
|
存储
如何解决网页中的pdf文件无法下载?pdf打印显示空白怎么办?
如何解决网页中的pdf文件无法下载?pdf打印显示空白怎么办?
185 0
|
4月前
|
前端开发 开发工具 git
Django实践-06导出excel/pdf/echarts
Django实践-06导出excel/pdf/echarts
Django实践-06导出excel/pdf/echarts
|
1月前
|
数据挖掘 数据安全/隐私保护 开发者
使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
使用Spire.PDF for Python插件从PDF文件提取文字和图片信息
107 0
|
1月前
|
存储 缓存 Python
如何使用Python抓取PDF文件并自动下载到本地
如何使用Python抓取PDF文件并自动下载到本地
34 0