用python清除PDF文件中的水印(Adobe Acrobat 无法删除)

学校老师发的资料,有时候会带水印,有点强迫症的都想给它去掉。用Adobe Acrobat试了下,检测不到水印,无法删除!分析发现原来这类PDF文件是用word编辑的,其中的水印是加在了页眉中!

自己动手想办法搞定它。

python 复制代码
"""
Title: 清除PDF水印(非pdf加的水印而是用word文件头加的然后转成了pdf)
Author: JackieZheng
Date: 2025-05-11 10:31:23
LastEditTime: 2025-05-12 23:43:21
LastEditors: Please set LastEditors
Description:
FilePath: \\pythonCode\\remove_pdf_watermark.py
"""

import os
import fitz  # PyMuPDF


def remove_image_watermark(pdf_path):
    doc = fitz.open(pdf_path)
    for page_num in range(len(doc)):
        page = doc[page_num]
        xref = page.get_contents()[0]  # 获取页面字节流,以xref的形式返回
        cont0 = doc.xref_stream(xref).decode()  # 将流解码为字符串
        page.clean_contents()
        if '/Header>> BDC' in cont0:  # 找到word页眉总分
            start_str = '/Header>> BDC'  # 获取水印起始位置
            end_str = 'c\r\nh\r\nf*\r\nq'  # 获取水印结束位置 (需要自己根据情况找到类似字符)

            cont = remove_between_strings(cont0, start_str, end_str)

            doc.update_stream(xref, cont.encode())  # 更新流
        print('page', page_num, 'processed')

    doc.save(pdf_path[:-4] + '_processed.pdf')
    doc.close()


def remove_between_strings(original_text, start_str, end_str):
    start = original_text.index(start_str) + len(start_str)
    end = original_text.index(end_str, start)
    content = original_text[:start] + original_text[end:]
    # print(content)
    return content


pdf_path = r'C:\Users\JackieZheng\Desktop\满分冲刺练.pdf'

remove_image_watermark(pdf_path)

操作原理:把文件解码为字符串,分析找出水印部分内容,从中剔除掉即可。

前后效果对比:

相关推荐
深蓝冰河7 小时前
全脑记忆法创始人的2套快速记忆法pdf 书下载地址
pdf
老王的笔记v16 小时前
69期 Filee文件格式转换工具 转盘拖拽 图片转PDF和音频转换
pdf·开源软件
指针向南18 小时前
怎么把PDF里的图片提取出来?5种方法和在线工具的坑
图像处理·人工智能·计算机视觉·pdf
橙光成长20 小时前
PDF离线工具箱深度解析:4MB纯前端单文件,40+功能全本地运行,文件绝不上传
前端·pdf·1024程序员节
易点云徐源2 天前
PDF 默认打开方式刚修好,过一分钟又变成“未知应用”?使用 ProcMon 成功抓出后台程序
windows·pdf
优化控制仿真模型2 天前
【2026.12月英语六级】英语六级历年真题PDF电子版+高频核心词汇1500个
经验分享·pdf
开开心心就好2 天前
发票信息录入太麻烦?离线工具一键转表格
运维·服务器·前端·pdf·ocr·maven·intellij-idea
聚美智数2 天前
文档转换 API‑文档转 PDF‑PDF 转文档‑异步文档处理‑文件格式迁移‑转换结果回调推送 API 接口介绍
android·java·pdf
麦序子3 天前
用 pdfplumber + 正则 解析工程量清单 PDF:提取项目编码、综合单价并导出 Excel
xml·pdf·python3.11