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

如何使用pypdf检测合并PDF文档中的加密页面?

如何用pypdf识别合并PDF中的加密页面

核心思路

合并后的混合加密PDF,单靠文档级的加密检测无法区分页面。我们可以通过逐页尝试访问页面内容/属性,利用加密页面会触发权限异常的特性,来定位具体加密页面。

实现代码

from pypdf import PdfReader

def find_encrypted_pages(pdf_file_path):
    reader = PdfReader(pdf_file_path)
    encrypted_page_nums = []
    
    for index in range(len(reader.pages)):
        page = reader.pages[index]
        try:
            # 尝试提取页面文本,加密页面会抛出权限相关异常
            page.extract_text()
            # 额外验证:尝试访问页面元数据属性
            _ = page.media_box
        except Exception as e:
            # 通过异常信息关键词判断是否为加密导致
            err_msg = str(e).lower()
            if "encrypted" in err_msg or "permission" in err_msg:
                encrypted_page_nums.append(index + 1)  # 转换为1起始的页面编号
    
    return encrypted_page_nums

# 调用示例
target_pdf = "你的混合加密PDF路径"
encrypted_pages = find_encrypted_pages(target_pdf)
print(f"加密页面:{encrypted_pages}")

关键说明

  • 异常判断逻辑:pypdf针对加密页面会抛出PermissionError、NotImplementedError等异常,通过匹配"encrypted"或"permission"关键词可以精准筛选加密场景。
  • 扩展验证:如果部分PDF允许文本提取但禁止其他操作,可以替换验证逻辑为尝试修改页面(如调整旋转角度),触发权限异常来判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:12:06