You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Python代码添加PDF水印未生成输出文件,遗漏了什么内容?

PDF水印代码错误修复

你代码的问题主要有3处:

  • 缩进逻辑错误:写输出文件的with open代码块放在了for循环内部,每处理一页就会覆盖写入一次输出文件,不仅会造成不必要的IO消耗,还容易触发文件占用冲突,导致最终输出文件损坏或者写入失败。你需要把这部分代码完全移出for循环,等所有页面都处理完成后再一次性写入。
  • PyPDF2版本兼容问题:你使用的PdfFileReader、PdfFileWriter是PyPDF2 1.x版本的旧API,2022年之后发布的2.x及以上版本已经移除了这些接口,如果你的环境安装的是新版PyPDF2,运行时会直接触发报错无输出,需要替换为新的PdfReader、PdfWriter接口。
  • 文件句柄未主动释放:你直接将open()返回的文件对象作为参数传入PDF读取类,没有主动关闭文件的逻辑,部分操作系统下会触发文件占用,导致PDF读取或写入失败。

修复后的可运行代码如下:

# pdf watermarkerV2 修复版
import PyPDF2

# 主动管理文件句柄,读取目标PDF和水印PDF
with open('super.pdf', 'rb') as template_file, open('wtr.pdf', 'rb') as watermark_file:
    template = PyPDF2.PdfReader(template_file)
    watermark = PyPDF2.PdfReader(watermark_file)
    watermark_page = watermark.pages[0]
    output = PyPDF2.PdfWriter()

    # 遍历所有页面加水印
    for page in template.pages:
        page.merge_page(watermark_page)
        output.add_page(page)

    # 所有页面处理完成后统一写入输出文件
    with open('watermarked.pdf', 'wb') as output_file:
        output.write(output_file)

如果运行后还是没有输出,先检查当前工作目录下是否存在super.pdf和wtr.pdf,确认文件名没有拼写错误、相对路径正确即可。

内容的提问来源于stack exchange,提问作者BoyWantsToCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:57:01