PDF 权限解除助手

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

批量解除 PDF 的「所有者密码/权限限制」——文件能打开阅读,却无法复制、打印、修改?一条命令整目录解锁,还可顺带批量抽取文本。全程本地离线,不上传云端。​ ✅ 能做:解除 Owner 权限标记(内容并未真正加密);用你已合法持有的密码解开自己的文件 ⛔ 不做:遇到需要「打开密码(User Password)」的文件一律停止,绝不破解、绝不绕过 亮点:先诊断再处理(--scan 五种状态识别)|源文件保留 / 备份后替换 / 直接替换三态可选|默认输出「已解锁」子目录,也可自定义路径|JSON 报告与规范退出码,方便 Agent 调用|开箱自测 8 组断言 适用:教材电子书想复制做笔记、扫描件合同批量提字检索、企业文档与审计底稿本地合规处理。

一句话选型结论

按资料字段整理

PDF 权限解除助手是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_cf65dc02/pdf-unlock-batch
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_cf65dc02仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791625654
正文体量10.8 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
PDF 权限解除助手当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

10.8 KB
模型实际读到的说明书原文,来自技能仓库

PDF 批量解锁与文本抽取

⚠️ 合规红线(执行前必读)

文件状态 是否处理 说明
未加密 ✅ 原样复制/直接抽取 —
Owner 加密(能打开,但不能复制/打印/修改) ✅ 解除限制 内容未被真正加密,权限只是"标记"
User 密码,用户已提供密码 ✅ --password 解开 合法授权场景
User 密码,无密码 ❌ 停止 绝不暴力破解、绝不绕过

原理:Owner 加密只在文件里写了"不许复制/打印"的权限标记,解密密钥就在文件内;User 密码才是真正的访问控制,绕过它需要暴力破解——本工具不提供、也不会提供该能力。

执行要求:
1. 仅处理本人拥有或已获授权的文件;
2. 敏感文件(审计底稿、合同等)必须本地离线处理,禁止上传任何在线解锁网站;
3. 首次处理建议先 --scan 或 --dry-run,确认范围后再实跑。

何时使用

  • 用户说"PDF 能打开但复制不了 / 打印不了 / 改不了"
  • 一批 PDF 需要逐个去掉只读限制,手动用 GUI 工具太慢
  • 需要从受限 PDF 里批量提取文字(配合 extract_text.py)

✋ 阶段 0:执行前必须让用户决定的两件事

不要替用户默认这两项。 它们决定文件会不会被覆盖、产物放哪里,属于用户财产处置权。
在跑解锁命令前,先用一次提问把两个选项问清(可用多选/二选一形式呈现),再据此拼命令行。

问题 1:源文件怎么处理?

选项 参数 行为 何时推荐
保留源文件(默认·最安全) --source-policy keep 原文件不动,解锁版另存 首次处理、重要资料、还需留档
替换并备份 --source-policy backup 原地替换,原文件先备份到 原文件备份/原名.pdf.bak 想让原位置直接可用,又想留退路
直接替换,不保留 --source-policy replace 原地覆盖,不可逆 已确认不需要原件、磁盘紧张

> 说明:replace 是原子写(先写 .tmp 再 os.replace),过程中断不会损坏原文件;
> 但替换成功后原件不可恢复,所以拿不准就选 backup。

问题 2:解锁后的文件放哪里?

选项 参数 输出位置
默认:源目录下新建「已解锁」 不加参数 <源目录>/已解锁/(目录模式保持原相对结构;单文件为 <文件所在目录>/已解锁/xxx.pdf)
改默认子目录名 --dir-name 已解密 <源目录>/已解密/
完全自定义路径 -o D:\我的输出 指定目录(保持相对结构);单文件时可直接给目标 .pdf 路径
备份目录改名 --backup-dir D:\备份 仅 backup 策略下生效

> 用中文目录名没问题;如需纯英文环境,--dir-name unlocked 一键切回。
> 注意:当源文件策略是 backup/replace 时,输出即源位置,问题 2 自然不适用(脚本会忽略输出目录)。

提问后可参考的话术

这批 PDF 解锁前先确认两点:
1) 原文件要保留吗?[保留(推荐)/ 替换但先备份 / 直接替换]
2) 解锁版放哪?[默认在源目录新建「已解锁」(推荐)/ 我来指定路径]

若用户未明确表态 → 一律按最保守组合执行:keep + 默认「已解锁」目录,然后再告知结果并询问是否要改成原地替换。

Agent 决策树

用户反映 PDF 受限
   ↓
⓪ 先问清两件事:源文件保留/备份/替换?输出放默认「已解锁」还是自定义路径?
   ↓
① 先 --scan 诊断(只读取,不改动文件)
   ↓
② 按状态分流:
   ├─ unencrypted            → 无需解锁,直接复制/抽取
   ├─ owner_locked           → ✅ 可解锁
   ├─ user_password_required → ⛔ 停止并告知用户;
   │                            若用户主动提供密码 → --password
   └─ broken                 → 报错,建议重新获取文件
   ↓
③ 解锁:按⓪的选择加 --source-policy / -o --dir-name
   ↓
④ 校验:--verify(回读确认未加密 + 页数一致)
   ↓
⑤ 要文字 → scripts/extract_text.py(pdfplumber 优先)

用法

脚本位于 scripts/,带 PEP 723 元数据,可用 uv run,也可直接 python 跑(需 pip install pypdf,抽取文本再加 pdfplumber)。

# 诊断(推荐第一步,不改任何文件)
python scripts/unlock.py -i ./加密PDF --scan

# 预览将处理哪些文件
python scripts/unlock.py -i ./加密PDF --dry-run

# 解锁:默认 —— 保留源文件,输出到 源目录/已解锁
python scripts/unlock.py -i ./加密PDF

# 只处理文件名含 2022 的
python scripts/unlock.py -i ./加密PDF --filter 2022

# 改默认子目录名 / 完全自定义输出目录
python scripts/unlock.py -i ./加密PDF --dir-name 已解密
python scripts/unlock.py -i ./加密PDF -o D:\输出
python scripts/unlock.py -i a.pdf -o D:\out\a_unlocked.pdf

# 源文件策略:替换并先备份(推荐折中)
python scripts/unlock.py -i ./加密PDF --source-policy backup --verify

# 源文件策略:直接替换,不保留(不可逆;--inplace 是其兼容别名)
python scripts/unlock.py -i ./加密PDF --source-policy replace --verify

# 已知打开密码的合法授权文件
python scripts/unlock.py -i a.pdf --password 已知密码

# 机器可读报告(供 Agent 解析)
python scripts/unlock.py -i ./加密PDF --json report.json

# 批量抽取文本
python scripts/extract_text.py -i ./加密PDF -o ./文本
python scripts/extract_text.py -i ./加密PDF -o 汇总.md --merge

主要参数

参数 默认 说明
-i/--input 必填 PDF 文件或目录
-o/--output 源目录/已解锁 自定义输出目录;单文件时可给目标 .pdf 路径
--dir-name 已解锁 默认输出子目录名(中英文均可)
--source-policy keep 源文件处置:keep保留 / backup替换并备份 / replace替换不保留
--backup-dir 源目录/原文件备份 仅 backup 生效;备份文件后缀 .bak
--inplace 关 [兼容别名] 等价 --source-policy replace
--password 无 已知的 User 密码
--scan 关 只诊断,不改动文件
--filter 无 文件名关键字过滤
--no-recursive 关 不递归子目录
--exclude 无 额外排除的目录名(可重复)
--json 无 JSON 报告路径
--verify 关 回读校验 + 页数比对
--dry-run 关 预览
--overwrite 关 覆盖已存在输出

退出码:0 全部成功 / 1 部分失败 / 2 输入错误 / 3 遇到需 User 密码的文件

状态含义(--scan 输出)

状态 含义
unencrypted 未加密,无需解锁
owner_locked 权限限制,可解除 ✅
user_password_required 需要打开密码,本工具不处理 ⛔
user_password_supplied 用提供的密码解开 ✅
broken 损坏或不是 PDF

踩坑提示(实测)

  1. 文本抽取务必用 pdfplumber:pypdf 的 extract_text() 对部分 CID 字体中文 PDF 会输出乱码(嵌入字体缺 ToUnicode 映射),但 pdfplumber 正常——看到乱码别误判为文件损坏或解锁失败。
  2. 输出目录会自动排除:目录模式下输出目录若位于输入目录内,扫描时自动跳过,不会自扫描或同名覆盖。
    此外默认还会排除名为 已解锁 / unlocked / 原文件备份 的目录——
    避免上次的产物被下次运行重复处理(实测踩过:默认跑完生成 已解锁/,再换 -o 跑一次就把里面的副本又扫进来了)。
    需要额外排除用 --exclude 目录名;把输出目录本身作为 -i 输入仍可正常处理。
  3. 原地替换是原子操作:先写 .tmp 再 os.replace,中途中断不会损坏原文件;但替换成功后原件不可恢复,故提供 backup 策略(备份为 原名.pdf.bak,后缀不是 .pdf,不会被批量扫描误伤)。
  4. 大文件:pypdf 流式 clone,百 MB 级文件秒级完成,但加 --verify 会回读一次、略慢。

文件结构

pdf-unlock-batch/
├── SKILL.md                 # 本文件(Agent 入口)
├── README.md                # 人类文档:原理 / 安装 / FAQ / 合规
├── LICENSE
├── scripts/
│   ├── unlock.py            # 核心:诊断 + 解锁(仅依赖 pypdf)
│   └── extract_text.py      # 可选:批量抽文本(依赖 pdfplumber)
└── tests/
    └── test_pipeline.py     # 真自测(硬断言,无跳过式假通过)

与其他工具的配合

  • 替代 GUI 工具逐个点:讯读等适合单文件,本技能适合整目录批量,且本地离线、可审计。
  • 配合 markitdown:解锁后的 PDF 可直接转 Markdown,进入后续分析流程。
  • 配合 OCR:扫描件(纯图片)抽取为空时,需走 OCR(如 Umi-OCR),本技能不内置。

完成度校验

  • 成功/失败分类计数清晰,失败文件打印具体原因;
  • --verify 回读确认未加密且页数一致;
  • --json 输出结构化结果供程序消费。

作者:李鹏洋(方少恒)· QQ:455922144

常见问题

5 问
答案由本站依据条目字段整理
PDF 权限解除助手怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_cf65dc02/pdf-unlock-batch。安装方式为未标注。装完刷新技能列表或重开客户端。

PDF 权限解除助手支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

PDF 权限解除助手权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

PDF 权限解除助手收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

PDF 权限解除助手用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。