如何利用Python将html转为pdf、word文件
作者:Python妙妙屋 发布时间:2022-07-27 10:36:55
前言
在日常中有时需将 html 文件转换为 pdf、word 文件。网上免费的大多数不支持多个文件转换的情况,而且在转换几个后就开始收费了。
转 pdf
转 pdf 中使用 pdfkit 库,它可以让 web 网页直接转为 pdf 文件,多个 url 可以合并成一个文件。
安装 pdfkit 库
pip3 install pdfkit
安装 wkhtmltopdf 文件
pdfkit 是基于 wkhtmltopdf 的 python 封装库,所以需要安装 wkhtmltopdf 软件。
在windows 系统中,需要将 wkhtmltopdf.exe 文件路径配置在系统环境变量中。
url 生成 pdf
这里使用 baidu 首页和 bing 首页作为示例
import pdfkit
# 第一个参数可以是列表,放入多个域名,第二个参数是生成的 PDF 名称
pdfkit.from_url(['www.baidu.com','www.bing.com'],'search.pdf')
本地 html 文件生成 pdf
提前将需要转换的 html 存储到本地,也可以使用 python 爬虫代码抓取 html 文件到本地。
import pdfkit
pdfkit.from_file('/Users/xx/Desktop/html/baidu.html', 'search.pdf')
转 word
使用 pypandoc 库将 html 转换为 word 文件,pypandoc 是一个支持多种文件格式转换的 Python 库,它用到了 pandoc 软件,所以需要在电脑上安装 pandoc 软件
安装 pypandoc 库
pip install pypandoc
安装 pandoc 软件
pypandoc 是基于 pandoc 软件的库,所以要安装一下 pandoc (https://github.com/jgm/pandoc/releases/tag/2.11.4),pandoc 支持多种类型转换。下图是 pandoc 的转换类型。
使用
将 html 文件提前存储在本地,也可以用爬虫将需要转换的 html 文件在代码中抓取后使用。
import pypandoc
# convert_file('原文件','目标格式','目标文件')
output = pypandoc.convert_file('/Users/xx/Desktop/html/baidu.html', 'docx', outputfile="baidu.doc")
pypandoc 无法对 word 进行排版,所以需要小伙伴们进行 2 次排版。
补充:用python把pdf文件转换为word文件
安装pip install pdf2docx:
pip install pdf2docx
如果安装过程出现报错,可能是版本匹配问题,先安装PyMuPDF这个库即可正常安装pip install PyMuPDF。
pip install PyMuPDF
安装好后,把需要转换的PDF文档放到和python代码同一个文件夹内。
python代码:
import os
from pdf2docx import Converter
def pdf_docx():
# 获取当前工作目录
file_path = os.getcwd()
# 获取所有文件
files = os.listdir(file_path)
# 遍历所有文件
for file in files:
# 过滤临时文件
if '~$' in file:
continue
# 过滤非pdf格式文件
if file.split('.')[-1] != 'pdf':
continue
# 获取文件名称
file_name = file.split('.')[0]
# pdf文件名称
pdf_name = os.getcwd() + '\\' + file
# docx文件名称
docx_name = os.getcwd() + '\\' + file_name + '.docx'
# 加载pdf文档
cv = Converter(pdf_name)
cv.convert(docx_name, start=0, end=12)
cv.close()
if __name__ == '__main__':
pdf_docx()
start是pdf转换的起始页,end是结束页。如果不传入start和end这两个参数,默认就是从第一页转换到最后一页。也可以通过pages方法确定转换页数,方法为:cv.convert(docx_file, pages=[0,2, 5])
来源:https://blog.csdn.net/y1282037271/article/details/128353452


猜你喜欢
- 我最近在参与Python字节码相关的工作,想与大家分享一些这方面的经验。更准确的说,我正在参与2.6到2.7版本的CPython解释器字节码
- 问题你想读写一个gzip或bz2格式的压缩文件。解决方案gzip 和 bz2 模块可以很容易的处理这些文件。 两个模块都为 open() 函
- 凯撒密码 是密码学中的一种简单的 替换加密 技术。明文中的所有字符都会替换为其按照字母表顺序向左(或向右)偏移一定量后得到的新字母,作为加密
- 实现步骤:图像灰度化边缘检测根据Canny检测得出来的Mat寻找轮廓算出最大轮廓周长or面积根据获取到的最大轮廓下标进行轮廓绘制画出最大矩形
- StreamReader sr = new StreamReader("E:\\123.txt");//文件路径 str
- 简介 SQL Server OS是在Windows之上,用于服务SQL Server的一个
- 1、上下文概念上下文,说白了就是所谓的语境,就是语言环境。比如单独拎出来一篇文章的某一句话,我们可能不能理解它的意思,但是通过这句话所处的语
- 首先,我们先来看看,如果是人正常的行为,是如何获取网页内容的。(1)打开浏览器,输入URL,打开源网页(2)选取我们想要的内容,包括标题,作
- 最近在这找了好久的js菜单,都没找到满意的,今天找了个,觉得不错,最重要的是简单,希望大家可以参照一下先看看效果图吧:代码特点:js+css
- Ubuntu18.04安装mysql5.7,供大家参考,具体内容如下1.1安装首先执行下面三条命令:# 安装mysql服务sudo apt-
- 本文研究的主要是python+matplotlib实现动态绘制图片(交互式绘图)的相关内容,具体介绍和实现代码如下所示。最近在研究动态障碍物
- strSourceFile = Server.MapPath(dataXML&"/Advertisement/"
- 可视化对于大家来说确实是有关的,因为确实是直观的,每一组大数据如果可以用可视化进行展示的话可以让大家豁然开朗。但在另外一些场景中,辅之以少量
- 讲起学生成绩管理系统,从大一C语言的课程设计开始,到大二的C++课程设计都是这个题,最近在学树莓派,好像树莓派常用Python编程,于是学了
- 获取需要使用到正则的两个对象:使用的是用正则对象Pattern 和匹配器Matcher。用法:范例: Pattern p = Pattern
- 环境python3,开发平台pycharm,使用urllib时,当url中存在中文时会出现以下错误:UnicodeEncodeError:
- 在使用tensorflow时常常会使用到tf.reduce_*这类的函数,在此对一些常见的函数进行汇总1.tf.reduce_sumtf.r
- PHP Warning: strtotime(): It is not safe to rely on the system's t
- 在Qtdesigner中新建一个主界面如下所示:ctrl+R 预览从预览图中可以看出这时的界面不支持伸缩,拖动过小的话会导致部分界面遮住不可
- 引言你知道什么是依赖注入吗?依赖注入(DI)的概念虽然听起来很深奥,但是如果你用过一些新兴的php框架的话,对于DI一定不陌生,因为它们多多