安装
-
首先需要使用pip命令安装PyPDF2库,可以在终端或命令提示符中运行以下命令:
pip install PyPDF2
使用
-
接下来是使用PyPDF2库合并PDF文件的代码示例。
import os from PyPDF2 import PdfFileWriter, PdfFileReader def get_filename(file_dir, download_type): """ 获取文件夹中所有指定后缀的文件 :param file_dir: 文件目录 :param download_type: 文件类型 """ file_list = [os.path.join(dir_path, filespath) for dir_path, dir_names, dir_files in os.walk(file_dir) for filespath in dir_files if str(filespath).endswith(download_type)] return file_list def merge_pdf(filepath, outfile): """ 合并指定目录下的所有pdf文件 :param filepath: 需要合并的文件目录 :param outfile: 合并后保存的pdf路径 :return: """ output = PdfFileWriter() output_pages = 0 # 获取两次解压后的pdf文件 pdf_file_name = get_filename(filepath, 'pdf') if pdf_file_name: for pdf_file in pdf_file_name: # 读取pdf文件 pdf_data = PdfFileReader(open(pdf_file, "rb")) # 获得pdf的页面总数 pdf_pages = pdf_data.getNumPages() output_pages += pdf_pages # 分别将page添加到输出output中 for i in range(pdf_pages): output.addPage(pdf_data.getPage(i)) # 写入到目标pdf文件 output_stream = open(os.path.join(filepath, outfile), "wb") output.write(output_stream) output_stream.close() return output_stream else: print("没有可以合并的pdf文件!")
-
使用该代码的流程如下:
- 调用get_filename函数获取需要合并的所有PDF文件路径。
- 通过调用PdfFileReader函数读取每个PDF文件,并获取每个PDF文件的总页数。
- 通过循环将每个PDF文件的每一页添加到输出对象output中。
- 通过调用PdfFileWriter函数将合并后的所有PDF文件保存到目标文件。
-
需要注意的是,由于PDF文件比较大,如果合并的PDF文件太多,可能会出现内存不足的情况。可以将合并PDF文件的过程分成多个小的步骤,分别合并PDF文件,最终将所有小的PDF文件再合并成一个大的PDF文件。