GUI实战|Python做一个文档图片提取软件
大家好,在上周的办公自动化系列文章中,我们已经讲解了如何用Python读取与写入Excel图片,在上上周的GUI系列文章中,也讲解了如何制作一个图片查看软件。
本文将进一步讲解如何用Python提取PDF与Word中图片,并结合之前讲解过的GUI框架PysimpleGUI
,做一个多文件图片提取软件,效果如下:
本文主要将分为以下部分讲解:
- PDF、Word、Excel文件图片提取
- 构造图片提取器GUI框架
- 整合代码并打包
主要涉及的Python模块有:
PIL
PySimpleGUI
re
win32
os
zipfile
fitz
准备工作
首先使用pip安装相关依赖模块
pip install pillow #这是对模块PTL的安装
pip install pypiwin32 #这是对win32的安装
pip install os
pip install zipfile
pip install PyMuPDF #这是引用fitz对PDF操作的包
pip install PySimpleGui
一、提取各文件内嵌图片
在之前的文章有讲过,读取Excel有两种方法。一种是将后缀名改成.zip
格式进行提取,一种是通过Pillow
模块对Excel进行图片复制与保存。而在我们这次3种文件格式的图片提取当中,Excel提取图片方法和之前一样。
Word提取图片方法和通过.zip
提取方法类似,PDF提取图片方法要用到新的模块。由于Excel提取图片的两种方法在之前的文章讲过,故这里只讲解PDF和Word的提取方法。
1.1 提取Word图片思路
和以前一样,我们先看代码再讲解
path = values["lujing"]
count = 1
for file in os.listdir(path):
new_file = file.replace(".docx",".zip")
os.rename(os.path.join(path,file),os.path.join(path,new_file))
count+=1
number = 0
craterDir = values["lujing"] + '/' # 存放zip文件的文件夹路径
saveDir = values["lujing"] + '/' # 存放图片的路径
list_dir = os.listdir(craterDir) # 获取所有的zip文件名
for i in range(len(list_dir)):
if 'zip' not in list_dir[i]:
list_dir[i] = ''
while '' in list_dir:
list_dir.remove('')
for zip_name in list_dir:
# 默认模式r,读
azip = zipfile.ZipFile(craterDir + zip_name)
# 返回所有文件夹和文件
namelist = (azip.namelist())
for idx in range(0,len(namelist)):
if namelist[idx][:11] == 'word/media/':#图片是在这个路径下
img_name = saveDir + str(number)+'.jpg'
f = azip.open(namelist[idx])
img = Image.open(f)
img = img.convert("RGB")
img.save(img_name,"JPEG")
number += 1
azip.close() #关闭文件,必须有,释放内存
这里的代码和GUI中通过.zip
方式提取Excel图片的代码思路是一样的。
“
path = values["lujing"]
这里是读取GUI中键为**“lujing”**的值,也即文件存储位置,用于os模块读取与操作。
new_file = file.replace(".docx",".zip")
是替换后缀名,如果是Excel的话,就把.docx
改成.xlsx
或xls
。
craterDir = values["lujing"] + '/'
这是存放zip文件的文件夹路径,注意这里读取到的键为“lujing”的值后要在后面添加/
。”
saveDir = values["lujing"] + '/'
这是存放图片的路径,同理,和上面一样加个/
号。
最后说一下与Excel提取相比,最大的不同是下面的代码
if namelist[idx][:11] == 'word/media/':
细心的读者可以发现,与Excel提取相比,中括号里面的值改了。
很好理解,我们可以打印namelist[idx],可以发现在索引0到10是'word/media/'
所在位置。而在Excel中是前9位。
感兴趣的读者可以翻看之前的文章,那里有对这段代码的详细解析,这里不多做介绍。
1.2 提取PDF图片思路
和之前的excel提取图片一样,在一个pdf中放入4张图片,我们将它压缩为zip文件©著作权归作者所有:来自51CTO博客作者mb5fe18e32e4691的原创作品,如需转载,请注明出处,否则将追究法律责任
更多相关文章
- 如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?
- PySimpleGUI 进阶| 原来用Python做一个图片查看系统,还能这么简单!
- 附实战代码|告别OS模块,体验Python文件操作新姿势!
- 让Python在后台自动解压各种压缩文件!
- 10行Python代码自动清理电脑内重复文件,解放双手!
- 用Python打造一款文件搜索工具,所有功能自己定义!
- Python办公自动化|自动整理文件,一键完成!
- Python地信专题 | 基于geopandas的空间数据分析-文件IO篇
- n种方式教你用python读写excel等数据文件