当前位置: 首页 > 后端技术 > Python

Python办公自动化|批量合并PDF,就用

时间:2023-03-26 11:21:26 Python

作者:陈曦来源:早起Python大家好,今天给大家分享一个实用的办公脚本:将多个PDF合并为一个PDF,比如我现在手上有以下三本PDF,需要合并成一个完整的PDF自己做的话,打开百度搜索:PDFmerge,然后去第三方网站操作,可能会收费,又担心文件泄露,现在请Python来玩,简单快速,光速融合,带走使用!首先导入需要的库和路径设置importosfromPyPDF2importPdfFileReader,PdfFileWriterifname=='__main__':设置存放多个pdf文件的文件夹dir_path=r'C:ScientificResearchKnowladgeOphthalmologyChineseOphthalmology'目标文件名file_name="《中国眼科学(第3版)综合版.pdf》然后获取所有pdf文件的绝对路径,这里需要使用os库中的os.walk遍历文件和os.path.join加入dirpath的路径,dirs,filesinos.walk(dir_path):print(dirpath)print(files)结果返回当前路径,当前路径下的文件夹,返回一个列表中的所有文件。建议直接把需要合并的pdf放到一个文件夹里,这样就不用修改文件后缀了。判断,打包成函数如下:defGetFileName(dir_path):file_list=[os.path.join(dirpath,filesname)fordirpath,dirs,filesinos.walk(dir_path)forfilesnameinfiles]returnfile_list调用这个函数现在创建合并PDF的函数defMergePDF(dir_path,file_name):实例化写入对象output=PdfFileWriter()outputPages=0调用之前的函数获取所有文件的绝对路径file_list=GetFileName(dir_path)forpdf_fileinfile_list:print("文件:%s"%pdf_file.split('')[-1],end='')读取PDF文件input=PdfFileReader(open(pdf_file,"rb"))获取源PDF文件的总页数pageCount=input.getNumPages()outputPages+=pageCountprint("页数:%d"%pageCount)分别为iPageinrange(pageCount)的输出添加页数:output.addPage(input.getPage(iPage))print("n合并后的总页数:%d"%outputPages)writetothetargetPDFFileprint("PDFfilesarebeingmerged,pleasewait...")withopen(os.path.join(dir_path,file_name),"wb")asoutputfile:注意这里的措辞和普通的contextfile写入是相反的output.write(outputfile)print("PDFfilemergingcompleted")可以看到虽然要合并的PDF文件比较大,但是还是合并的很快,成功了!最后附上完整代码,只需在代码中修改PDF的路径和文件名即可使用!importosfromPyPDF2importPdfFileReader,PdfFileWriterdefGetFileName(dir_path):file_list=[os.path.join(dirpath,filesname)fordirpath,dirs,filesinos.walk(dir_path)forfilesnameinfiles]returnfile_listdefMergePDF(dir_path,file_name)):output=PdfFileWriter()outputPages=0file_list=GetFileName(dir_path)forpdf_fileinfile_list:print("File:%s"%pdf_file.split('')[-1],end='')读取PDF文件输入=PdfFileReader(open(pdf_file,"rb"))获取源PDF文件中pageC的总页数ount=input.getNumPages()outputPages+=pageCountprint("Numberofpages:%d"%pageCount)分别为iPageinrange(pageCount)的output添加页数:output.addPage(input.getPage(iPage))print("n合并后总页数:%d"%outputPages)写入目标PDF文件print("正在合并PDF文件,请稍候...")withopen(os.path.join(dir_path,file_name),"wb")asoutputfile:注意这里的写法和普通context文件写法相反pdf文件存放dir_path=r'C:ScientificResearchKnowladgeOphthalmologyChineseOphthalmology'目标文件名file_name="中国眼科(第3版).pdf"MergePDF(dir_path,file_name)