将多个 PDF 文件合并到一个文档中可能是一项繁琐的任务,尤其是当文件分布在多个目录中时。使用 Python,这项任务变得无缝且自动化。在本教程中,我们将使用 PyPDF2 创建一个命令行界面 (CLI) 工具,然后单击合并目录(包括其子目录)中的所有 PDF 文件,同时排除 .venv 和 .git 等特定目录。
开始之前,请确保您具备以下条件:
所需的库:
pip install PyPDF2
安装单击以创建 CLI:
pip install click
这是我们的 CLI 工具的完整代码:
import click from pathlib import Path from PyPDF2 import PdfMerger import os EXCLUDED_DIRS = {".venv", ".git"} @click.command() @click.argument("directory", type=click.Path(exists=True, file_okay=False, path_type=Path)) @click.argument("output_file", type=click.Path(dir_okay=False, writable=True, path_type=Path)) def merge_pdfs(directory: Path, output_file: Path): """ Merge all PDF files from DIRECTORY and its subdirectories into OUTPUT_FILE, excluding specified directories like .venv and .git. """ # Initialize the PdfMerger merger = PdfMerger() # Walk through the directory tree, including the base directory for root, dirs, files in os.walk(directory): # Exclude specific directories dirs[:] = [d for d in dirs if d not in EXCLUDED_DIRS] # Convert the root to a Path object current_dir = Path(root) click.echo(f"Processing directory: {current_dir}") # Collect PDF files in the current directory pdf_files = sorted(current_dir.glob("*.pdf")) if not pdf_files: click.echo(f"No PDF files found in {current_dir}") continue # Add PDF files from the current directory for pdf in pdf_files: click.echo(f"Adding {pdf}...") merger.append(str(pdf)) # Write the merged output file output_file.parent.mkdir(parents=True, exist_ok=True) merger.write(str(output_file)) merger.close() click.echo(f"All PDFs merged into {output_file}") if __name__ == "__main__": merge_pdfs()
目录遍历:
PDF 文件集合:
合并 PDF:
CLI 集成:
将代码保存到文件中,例如 merge_pdfs.py。从终端运行它,如下所示:
python merge_pdfs.py /path/to/directory /path/to/output.pdf
假设您有以下目录结构:
/documents ├── file1.pdf ├── subdir1 │ ├── file2.pdf ├── subdir2 │ ├── file3.pdf ├── .git │ ├── ignored_file.pdf
按如下方式运行该工具:
python merge_pdfs.py /documents /merged.pdf
这会将 file1.pdf、file2.pdf 和 file3.pdf 合并为 merged.pdf,跳过 .git。
递归合并:
目录排除:
排序合并:
CLI 简单性:
大文件:
PDF 兼容性:
自定义排除:
本教程演示如何使用 Python 自动合并目录结构中的 PDF。提供的 CLI 工具非常灵活,可以适应更复杂的工作流程。尝试一下,让我们知道它如何为您服务!
编码愉快! ?
以上是使用 Python 递归合并 PDF的详细内容。更多信息请关注PHP中文网其他相关文章!