PdfFileWriter 类是用于向 PDF 文件写入内容的模块(本教程后续简称为 pdfwriter,暂称其为 PDF 文件写入器),可将指定页面添加至 PDF 文件中。该模块常与 PdfFileReader 模块协同使用,实现对 PDF 文件的读取与写入操作。
代码操作在
在C盘用户目录下的Desktop文件夹中,路径为pypdfday03的文件夹内包含两个PDF文件:test.pdf和ad.pdf。其中,test.pdf为一个8页的测试文档,用于读取操作;ad.pdf为仅含一页的个人logo文件。测试环境为IPython 8.0交互式界面。

读取测试PDF1

个人Logo的PDF格式文件
一图胜千言,写入器简介图示
思维导图如下:

写模块思维导图
首先初始化环境,将PdfFileReader简写为pdfreader,PdfFileWriter简写为pdfwriter,便于后续操作调用。
导入所需的读写模块,并对模块名称进行简化别名:使用 PyPDF2 中的 PdfFileReader 并命名为 pdfreader,同时将 PdfFileWriter 命名为 pdfwriter。随后创建两个 PDF 文件读取对象和一个写入对象。首先,通过 pdfreader 打开名为 test.pdf 的文件,生成读取器实例 rpdf,用于读取主文档内容;接着,同样利用 pdfreader 打开名为 ad.pdf 的文件,创建另一个读取器实例 ad,用以获取附加文档的数据。实例化一个 PdfFileWriter 对象,并赋值给变量 wpdf,该对象将用于构建新的 PDF 文件,实现页面合并或内容写入操作。整个过程为后续的 PDF 文档处理奠定基础,例如插入、合并或修改页面等操作均可在此基础上进行。各对象分工明确,读取器负责解析原始文件结构,写入器则准备生成最终输出文件。

测试addPage()添加页面功能,并结合write()方法实现文件写入与保存。
顾名思义,即添加一个页面,参数需为页面对象,可通过pdfreader的getPage(数字)方法获取,具体操作如下所示。
获取广告文件的第一页,将其作为logo页面添加到目标PDF中,连续添加两次以实现重复展示效果。随后创建一个新的PDF文档,将包含两次logo页面的内容写入其中。将生成的文件保存为add_ad2.pdf,完成文档合并与保存操作。

写入器新增页面并写入文件内容

连续两次写入的结果
测试insertPage()页面插入功能,并结合write()方法实现文件写入与保存。
顾名思义,插入操作包含两个参数:一个是页面对象,与addPage相同;另一个是index=0,表示默认插入至首页。具体操作请见下文。
从test文件中提取第2页作为临时页面,即获取索引为1的页面,将其赋值给变量page_tmp。随后,将该临时页面插入到目标PDF写入器wpdf的指定位置。完成页面插入操作后,创建一个名为insert_ad2.pdf的新文件,并以二进制写入模式打开。通过write方法将更新后的PDF内容写入该文件,实现页面插入结果的保存。整个过程实现了PDF文档的局部修改与重新输出。

插入页面操作演示
学完读写基础模块后,我们就能对PDF文件进行页面插入、排序和提取等操作。例如,可为大型PDF文件添加首页、尾页或个人Logo,也可在中间插入内容,具体应用将在下一节的实例中详细演示。