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的基本情况。

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

目录
相关文章
|
5天前
|
人工智能 JSON 搜索推荐
猫步简历 - 开源免费AI简历生成器 | 一键导出PDF/JSON
猫步简历是一款免费开源的AI简历生成器,帮助用户轻松创建独特、专业的简历。支持导出超高清PDF、图片、JSON等多种格式,并提供AI智能创作、润色和多语种切换等功能。拥有海量模板、高度定制化模块及完善的后台管理系统,助力求职者脱颖而出。官网:https://maobucv.com,GitHub开源地址:https://github.com/Hacker233/resume-design。
75 10
|
7天前
|
文字识别 BI
【图片型PDF】批量识别扫描件PDF指定区域局部位置内容,将识别内容导出Excel表格或批量改名文件,基于阿里云OCR对图片型PDF识别改名案例实现
在医疗和政务等领域,图片型PDF文件(如病历、报告、公文扫描件)的处理需求广泛。通过OCR技术识别这些文件中的文字信息,提取关键内容并保存为表格,极大提高了信息管理和利用效率。本文介绍一款工具——咕嘎批量OCR系统,帮助用户快速处理图片型PDF文件,支持区域识别、内容提取、导出表格及批量改名等功能。下载工具后,按步骤选择处理模式、进行区域采样、批量处理文件,几分钟内即可高效完成数百个文件的处理。
49 8
|
4月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
908 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
3月前
|
前端开发 API
前端界面生成PDF并导出下载
【10月更文挑战第21天】利用合适的第三方库,你可以在前端轻松实现界面生成 PDF 并导出下载的功能,为用户提供更方便的文档分享和保存方式。你还可以根据具体的需求进一步优化和定制生成的 PDF 文件,以满足不同的业务场景要求。
|
4月前
|
资源调度 前端开发 JavaScript
安利一款基于canvas/svg的富文本编辑器-支持在线导出PDF、DOCX
高性能:利用Canvas和SVG进行图形和矢量图形的渲染,提供高性能的绘图能力。 可扩展性:Canvas-Editor是一个开源项目,支持通过插件机制扩展编辑器的功能,如DOCX、PDF导出、表格分页等。 丰富的文本编辑功能:支持多种文本编辑操作,如插入表格、分页、性能优化等。
517 0
|
5月前
|
JavaScript
vue导出pdf(接口)
vue导出pdf(接口)
45 3
|
6月前
|
移动开发 资源调度 JavaScript
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
这篇文章介绍了在Vue移动端网页中使用`pdfh5`和`vue-pdf`两个插件来实现PDF文件的预览,包括滚动查看、缩放、添加水印、分页加载、跳转指定页数等功能。
5081 0
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
|
12天前
|
人工智能 编解码 文字识别
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
OCRmyPDF 是一款开源命令行工具,专为将扫描的 PDF 文件转换为可搜索、可复制的文档。支持多语言、图像优化和多核处理。
140 17
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
|
28天前
|
机器学习/深度学习 人工智能 文字识别
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
Zerox 是一款开源的本地化高精度OCR工具,基于GPT-4o-mini模型,支持PDF、DOCX、图片等多种格式文件,能够零样本识别复杂布局文档,输出Markdown格式结果。
113 4
Zerox:AI驱动的万能OCR工具,精准识别复杂布局并输出Markdown格式,支持PDF、DOCX、图片等多种文件格式
|
2月前
|
人工智能 文字识别 数据挖掘
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
MarkItDown 是微软开源的多功能文档转换工具,支持将 PDF、PPT、Word、Excel、图像、音频等多种格式的文件转换为 Markdown 格式,具备 OCR 文字识别、语音转文字和元数据提取等功能。
335 9
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式

热门文章

最新文章