前言
在平时的日常学习生活或办公生活中,想必大家有过将pdf文件做批量合并,转Word等方面的操作吧,今天这篇文章就教大家使用python来实现pdf文件的批量合并,转Word操作。临近学期末,我这里就有一个这样的需求,在网页上有着几套选择题,我把它们存为pdf保存在了本地。为了更加方便的去查找相关字眼的题目,我就编写了一些python代码将多个pdf文件进行合并,并实现pdf文件转Word的功能。温馨提示:这些功能在现实中是需要收费的,作为我的粉丝,恭喜你们又学到了一招,学到就是赚到。丨
本案例很实用,建议点赞收藏!!!!
1.环境准备
这里使用的第三方模块有:pdf2docx、PyPDF2,如果有未安装模块的伙伴可以在终端上使用以下命令进行安装:
1pip install pdf2docx 2pip install PyPDF2
出现Successful代表模块安装成功!
2.功能函数模块的编写
2.1批合并功能的实现
在前期环境准备工作完成以后,现在我们要做的就是编写处理业务功能的函数模块啦!
首先来编写实现多个pdf文件批合并功能,编写函数pdf_merge(),并提供两个参数:1、存放多个pdf文件的目录,2、批合并后生成的文件名。这里用os模块的listdir方法帮我们列出目录中的文件并给我们返回一个列表。在对该列表进行遍历并过滤出pdf文件,使用列表推导式的方式将目录中的pdf文件存入处理好的列表当中。并将列表中的pdf文件批量添加到该pdf文件管理器中,最后在将pdf管理器中的pdf文件对象进行写入(合并操作)就完成pdf的合并操作啦。
1def pdf_merge(target_path, fileName): 2 ''' 3 :param target_path: 存放pdf文件的目录 4 :return:转换后的文件名 5 ''' 6 # target_path = '题目' 7 pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')] 8 pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst] 9 10 file_merger = PdfFileMerger() 11 for pdf in pdf_lst: 12 file_merger.append(pdf) # 合并pdf文件 13 14 file_merger.write(fileName) # 合并为merge.pdf 15 return fileName
2.2 pdf文件转Word功能的实现
现在开始编写pdf转word功能,定义函数并传入一个文件对象作为参数,这里先对pdf文件对象进行文件类型的判断,判断它是否为pdf文件。如果为pdf文件,就调用pdf2docx模块的Connverter类对该pdf文件对象进行处理,不为pdf文件就不对文件进行处理,并输出不是一个pdf文件。
1def pdf_docx(file): 2 ''' 3 :param file:pdf文件 4 :return: 5 ''' 6 if file.endswith('pdf'): 7 docx_file = file.replace('pdf', 'docx') 8 pdf = pdf2docx.Converter(file) 9 pdf.convert(docx_file, start=0, end=None) 10 pdf.close() 11 print(f'{docx_file}\t文件转为完成!') 12 else: 13 print(f'{file}不是一个pdf文件!')
以上就是两个功能函数的实现,现在来运行代码看看吧~
代码运行完毕,可以看到批合并的pdf文件和pdf转换的文件已经生成好啦~
最后奉上全部代码:
1import os, pdf2docx 2from PyPDF2 import PdfFileMerger 3 4 5def pdf_merge(target_path, fileName): 6 ''' 7 :param target_path: 存放pdf文件的目录 8 :return:转换后的文件名 9 ''' 10 # target_path = '题目' 11 pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')] 12 pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst] 13 14 file_merger = PdfFileMerger() 15 for pdf in pdf_lst: 16 file_merger.append(pdf) # 合并pdf文件 17 18 file_merger.write(fileName) # 合并为merge.pdf 19 return fileName 20 21 22def pdf_docx(file): 23 ''' 24 :param file:pdf文件 25 :return: 26 ''' 27 if file.endswith('pdf'): 28 docx_file = file.replace('pdf', 'docx') 29 pdf = pdf2docx.Converter(file) 30 pdf.convert(docx_file, start=0, end=None) 31 pdf.close() 32 print(f'{docx_file}\t文件转为完成!') 33 else: 34 print(f'{file}不是一个pdf文件!') 35 36 37if __name__ == '__main__': 38 file = pdf_merge('题目', 'merge.pdf') 39 pdf_docx(file)
以上就是今天的全部内容了