作者:陈熹
来源:早起Python
大家好,今天分享一个实用的办公脚本:将多个PDF合并为一个PDF,例如我手上现在有如下3个PDF分册,需要整合成一个完整的PDF
如果换成你操作的话,是不是打开百度搜索:PDF合并,然后去第三方网站操作,可能会收费不说还担心文件泄漏,现在有请Python出场,简单快速,光速合并,拿走就用!
首先导入需要的库和路径设置
import os from PyPDF2 import PdfFileReader, PdfFileWriter if __name__ == '__main__': # 设置存放多个pdf文件的文件夹 dir_path = r'C:\Scientific Research\Knowladge\Ophthalmology\Chinese Ophthalmology' # 目标文件的名字 file_name = "中华眼科学(第3版)合并版.pdf"
接着获取所有pdf文件的绝对路径,这里需要利用os库中的os.walk遍历文件和os.path.join拼接路径
for dirpath, dirs, files in os.walk(dir_path): print(dirpath) print(files) # 结果返回当前路径、当前路径下文件夹,并以列表返回所有文件
建议直接将需要合并的pdf放在一个文件夹,这样就无需再对文件后缀进行判断,包装成函数后如下:
def GetFileName(dir_path): file_list = [os.path.join(dirpath, filesname) \ for dirpath, dirs, files in os.walk(dir_path) \ for filesname in files] return file_list
调用该函数的结果
现在建立合并PDF的函数
def MergePDF(dir_path, file_name): # 实例化写入对象 output = PdfFileWriter() outputPages = 0 # 调用上一个函数获取全部文件的绝对路径 file_list = GetFileName(dir_path) for pdf_file in file_list: print("文件:%s" % pdf_file.split('\\')[-1], end=' ') # 读取PDF文件 input = PdfFileReader(open(pdf_file, "rb")) # 获得源PDF文件中页面总数 pageCount = input.getNumPages() outputPages += pageCount print("页数:%d" % pageCount) # 分别将page添加到输出output中 for iPage in range(pageCount): output.addPage(input.getPage(iPage)) print("\n合并后的总页数:%d" % outputPages) # 写入到目标PDF文件 print("PDF文件正在合并,请稍等......") with open(os.path.join(dir_path, file_name), "wb") as outputfile: # 注意这里的写法和正常的上下文文件写入是相反的 output.write(outputfile) print("PDF文件合并完成")
可以看到虽然待合并的PDF文件比较大,但是依旧快速的合并成功!最后附上完整代码,只需将代码中PDF的路径和文件名修改即可使用!
import os from PyPDF2 import PdfFileReader, PdfFileWriter def GetFileName(dir_path): file_list = [os.path.join(dirpath, filesname) \ for dirpath, dirs, files in os.walk(dir_path) \ for filesname in files] return file_list def MergePDF(dir_path, file_name): output = PdfFileWriter() outputPages = 0 file_list = GetFileName(dir_path) for pdf_file in file_list: print("文件:%s" % pdf_file.split('\\')[-1], end=' ') # 读取PDF文件 input = PdfFileReader(open(pdf_file, "rb")) # 获得源PDF文件中页面总数 pageCount = input.getNumPages() outputPages += pageCount print("页数:%d" % pageCount) # 分别将page添加到输出output中 for iPage in range(pageCount): output.addPage(input.getPage(iPage)) print("\n合并后的总页数:%d" % outputPages) # 写入到目标PDF文件 print("PDF文件正在合并,请稍等......") with open(os.path.join(dir_path, file_name), "wb") as outputfile: # 注意这里的写法和正常的上下文文件写入是相反的 output.write(outputfile) print("PDF文件合并完成") if __name__ == '__main__': # 设置存放多个pdf文件的文件夹 dir_path = r'C:\Scientific Research\Knowladge\Ophthalmology\Chinese Ophthalmology' # 目标文件的名字 file_name = "中华眼科学(第3版)合并版.pdf"MergePDF(dir_path, file_name)
——热门课程推荐:
想从事业务型数据分析师,您可以点击>>>“数据分析师”了解课程详情;
想从事大数据分析师,您可以点击>>>“大数据就业”了解课程详情;
想成为人工智能工程师,您可以点击>>>“人工智能就业”了解课程详情;
想了解Python数据分析,您可以点击>>>“Python数据分析师”了解课程详情;
想咨询互联网运营,你可以点击>>>“互联网运营就业班”了解课程详情;
数据分析咨询请扫描二维码
准备CDA一级考试的时间因人而异,但根据多个来源的建议,平均备考周期在1个月左右为宜。有的考生可能在1-2周内完成备考并参加 ...
2024-09-13数据分析师的培训课程内容通常涵盖了数据分析的理论知识和实践技能,以帮助学员掌握数据分析的全过程。以下是一些典型的课程内 ...
2024-09-13近年来,随着社会的不断进步和科技的发展,计算机领域的各种新概念和技术不断涌现,并被广泛应用于企业管理、数据分析和公共服 ...
2024-09-13统计学作为一门理论与实践并重的学科,其就业前景一直被广泛看好。随着数据科学、大数据、人工智能等领域的快速发展,统计学在 ...
2024-09-13作者:鱼仔 某中厂老兵|CDA2级持证人|数据践行者 作为一名数据分析师,你可能会被朋友或同事问到:“数据分析师到底是干 ...
2024-09-13作者:鱼仔 某中厂老兵 | CDA2级持证人 | 数据践行者 统计学毕业生的就业选择非常多样化,几乎覆盖了各行各业。以 ...
2024-09-13数据分析人员使用业务分析报告汇报分析成果,对于业务分析报告的注意事项,以下不正确的是 A. 条理 ...
2024-09-13数据分析人员使用业务分析报告汇报分析成果,以下不属于业务分析报告调整完善阶段的是 A. &nbs ...
2024-09-13数据分析人员使用业务分析报告汇报分析成果,不同种类的分析报告着重点不同,以下不属于渠道合作报告的重点的是() A. & ...
2024-09-13作者:鱼仔 某中厂老兵|CDA2级持证人|数据践行者 作为一名数据分析师,很多人都会问,数据分析师究竟是干什么的?这个职 ...
2024-09-12【2024最新版】CDA考试教材:精益业务数据分析_CDA教材_精益数据分析CDA教材_精益数据分析_cda教材_考试教材 (cdaglobal.com) ...
2024-09-12作者:鱼仔 某中厂老兵|CDA2级持证人|数据践行者 数据分析师的日常工作涉及多个环节,从数据收集到最后的报告撰 ...
2024-09-12《数据分析专项练习题库》 《CDA数据分析认证考试模拟题库》 《企业数据分析面试题库》 75.利用Apriori算法计 ...
2024-09-12《数据分析专项练习题库》 《CDA数据分析认证考试模拟题库》 《企业数据分析面试题库》 一、单选题 1.某超市研究销 ...
2024-09-12在阿里巴巴、腾讯、字节跳动等科技巨头里,大数据是他们的核心竞争力之一。大数据帮助这些公司在海量数据中挖掘有价值的 ...
2024-09-12《数据分析专项练习题库》 《CDA数据分析认证考试模拟题库》 《企业数据分析面试题库》 一、单选题 1.统计图中的散 ...
2024-09-12《数据分析专项练习题库》 《CDA数据分析认证考试模拟题库》 《企业数据分析面试题库》 一、单选题 1.某超市研 ...
2024-09-12《CDA数据分析认证考试模拟题库》 一、单选题 1.统计图中的散点图主要用来(A)。 A ...
2024-09-12嗨喽,各位同学又到了公布CDA数据分析师认证考试LEVEL I的模拟试题时间了,今天给大家带来的是模拟试题(二)中的11-15题。 ...
2024-09-12CDA考试教材https://www.cdaglobal.com/article/475.html CDA模拟题库https://www.cdaglobal.com/ ...
2024-09-12