如何用Python的PdfFileMerger合并重复PDF页并插入空白页?
解决方案:用PyPDF2的PdfWriter实现需求
因为PdfFileMerger确实没有内置添加空白页的方法,我们可以改用PyPDF2的PdfWriter类来实现所有需求——既可以重复添加指定页面,又能直接生成空白页插入,完全不需要额外创建空白PDF文件,也不会修改源文件。
完整代码示例
from PyPDF2 import PdfReader, PdfWriter # 配置:(重复次数, 源PDF路径, 目标页码) 页码从0开始计数(第一页是0) docs = [ (20, "A.pdf", 0), (20, "B.pdf", 0) ] blank_page_count = 3 merged_writer = PdfWriter() for idx, (repeat_num, pdf_path, page_num) in enumerate(docs): # 读取源PDF的指定页面 reader = PdfReader(pdf_path) target_page = reader.pages[page_num] # 重复添加指定页面 for _ in range(repeat_num): merged_writer.add_page(target_page) # 非最后一个文档组,插入指定数量的空白页 if idx != len(docs) - 1: for _ in range(blank_page_count): # 默认使用源页面的尺寸生成空白页,也可以手动指定宽高:add_blank_page(width=..., height=...) merged_writer.add_blank_page(width=target_page.mediabox.width, height=target_page.mediabox.height) # 写入合并后的PDF with open("mergeddoc2.pdf", "wb") as output_file: merged_writer.write(output_file)
关键说明
- 指定页面读取:通过
PdfReader的pages[page_num]获取目标页面,未来要指定其他页时,只需要修改page_num的值(比如第二页填1)即可。 - 空白页生成:
add_blank_page()可以直接生成空白页,这里复用了源页面的尺寸,保证空白页和源页面大小一致,也可以手动传入width和height自定义尺寸。 - 避免多余空白页:通过
enumerate获取索引,判断是否为最后一个文档组,避免在最终PDF末尾添加不必要的空白页。 - 资源管理:使用
with语句处理输出文件,自动关闭文件流,比手动调用close()更安全。
内容的提问来源于stack exchange,提问作者MyICQ
相关产品推荐
相关产品推荐

