不多说,直接上代码:
# -*- coding:utf-8*-
# 请拉到最底下,修改这两个变量
# 请修改需要合并的文件的文件夹路径:file_dir
# 请修改输出文件名: outfile
import os
import sys
try:
from PyPDF2 import PdfFileReader, PdfFileWriter
except:
os.system("pip install PyPDF2")
from PyPDF2 import PdfFileReader, PdfFileWriter
# 使用os模块的walk函数,搜索出指定目录下的全部pdf文件
# 获取同一目录下的所有pdf文件的绝对路径
def get_file_name(file_dir,out_file):
file_dir_L = []
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.pdf':
file_dir_L.append(os.path.join(root, file))
if os.path.splitext(file)[0] == out_file.split(".")[0]:
print("\n已经存在输出文件:%s 请删除后再运行!!!" % out_file)
sys.exit()
return file_dir_L
# 合并同一目录下的所有pdf文件
def merge_pdf(file_path, out_file):
output = PdfFileWriter()
outputPages = 0
pdf_fileName = get_file_name(file_path,out_file)
if pdf_fileName:
for pdf_file in pdf_fileName:
print("正在读取:%s" % pdf_file)
# 读取pdf文件
pdf_data = PdfFileReader(open(pdf_file, "rb"))
# 获得pdf文件中的总页数
pageCount = pdf_data.getNumPages()
print("增加 %d 页" % pageCount)
outputPages += pageCount
# 将页面添加到输出中
for iPage in range(pageCount):
output.addPage(pdf_data.getPage(iPage))
print("\n合并后的总页数: %d" % outputPages)
# 写入pdf文件
outputStream = open(os.path.join(file_path, out_file), "wb")
output.write(outputStream)
outputStream.close()
print("pdf文件合并完成!")
else:
print("没有可以合并的pdf文件!")
# 主函数
def main():
file_dir = r'D:\Users\DDX\Desktop\test' # 存放pdf的文件夹
outfile = "merge.pdf" # 输出的pdf文件的名称
merge_pdf(file_dir, outfile)
main()