Python脚本无报错但未生成加水印PDF文件求助
问题排查与修复:PyPDF2合并PDF水印无输出文件
你的代码存在两个关键问题,导致没有生成目标文件:
未实例化PdfFileWriter对象
代码里output = PyPDF2.PdfFileWriter只是引用了类本身,没有创建可操作的实例。正确写法是加上括号:output = PyPDF2.PdfFileWriter(),这样才能生成用于存储合并页面的Writer对象。文件写入逻辑缩进错误
你把with open代码块放在了for循环内部,这会导致每处理一页就重复打开文件,再加上第一个错误的影响,实际根本没有有效数据写入。应该把写入操作移到循环外面,等所有页面都添加完成后,一次性写入文件。
修复后的完整代码:
import PyPDF2 template = PyPDF2.PdfFileReader(open('super.pdf', 'rb')) watermark = PyPDF2.PdfFileReader(open('wtr.pdf', 'rb')) # 实例化PdfFileWriter对象 output = PyPDF2.PdfFileWriter() for i in range(template.getNumPages()): page = template.getPage(i) page.mergePage(watermark.getPage(0)) output.addPage(page) # 所有页面处理完成后统一写入文件 with open('watermarked_output.pdf', 'wb') as file: output.write(file) print("done")
运行修复后的脚本,就能在当前目录下得到每页带水印的目标PDF文件。如果仍有问题,可以尝试升级PyPDF2到最新版本:pip install --upgrade PyPDF2
内容的提问来源于stack exchange,提问作者Jace
相关产品推荐
相关产品推荐

