关于 pdf-toolkit
仅使用标准库审计 PDF 元数据和安全指标的技能,适用于文件交接、入站安全检查及批量核查;不提取文本,也不能解密文件。
主要功能
- 01检查 PDF 版本、大小和页数
- 02读取文档及 XMP 元数据
- 03标记加密和 JavaScript 指示项
- 04检测嵌入文件指示项
- 05支持 JSON 输出
适用场景
- 01对外发送前检查元数据
- 02初步评估收到的 PDF 安全风险
- 03批量审计文件夹中的外发 PDF
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill pdf-toolkit安装后在 Claude Code 中输入/pdf-toolkit确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/pdf_handoff_checklist.mdreferences/pdf_handoff_guide.mdscripts/pdf_auditor.py详细介绍
PDF 工具包
仅使用标准库审核 .pdf 文件的元数据、页数、加密状态、嵌入式 JavaScript、嵌入文件和 PDF 版本。
目录
关键词
pdf、pdf 审核、pdf 元数据、pdf 审阅、pdf 泄漏、pdf 安全、编辑、文档交接
先澄清
运行审核前,请确认以下输入。如果有任何信息未知或含糊,请询问,不要自行假设:
- 审核目的(交接前清理元数据、入站安全筛查或批量出站检查)——用于选择 3 种工作流中的一种,以及要处理的字段
- 接收方/处理场景(外部人员、受管理的笔记本电脑)——用于确定哪些情况属于泄漏,哪些威胁值得隔离
- 预期的合法元数据(作者/标题应是什么)——没有这些信息,就无法区分泄漏与预期数据
停止规则:只询问最能影响结果的 2-3 个问题。如果用户说“先起草就行”,则继续处理,并在产物开头列出假设。
快速开始
python scripts/pdf_auditor.py contract.pdf
输出:PDF 版本、页数、文件大小、元数据(Author、Title、Producer、Creator、日期)、加密状态、嵌入式 JavaScript 指示项、嵌入文件指示项。
核心工作流
工作流 1:交接前 PDF 元数据审核
目标: 将 PDF 交给外部人员时,避免泄漏作者身份、先前客户名称或文档历史记录。
步骤:
- 运行:
python scripts/pdf_auditor.py document.pdf - 检查元数据字段:
Author与发送方一致(而不是之前项目中“Bob 的实习生”)Title与文档内容一致,而不是遗留的工作标题Producer不会暴露仅供内部使用的 PDF 工具CreationDate和ModDate对当前交易而言合理
- 如果元数据存在泄漏,请从源文件重新导出并清理属性(或使用编辑工具)
预计耗时: 每份文档 2-3 分钟。
工作流 2:PDF 安全筛查
目标: 判断收到的 PDF 是否能在受管理的笔记本电脑上安全打开。
步骤:
- 运行审核
- 存在 JavaScript 指示项 → 隔离;在沙盒中检查
- 存在嵌入文件指示项 → 列出文件类型;如有异常则隔离
- 使用非空所有者密码加密 → 通过独立渠道向发送方索要密码
- 决策:打开/隔离/拒绝
预计耗时: 每份入站文档 1-2 分钟。
工作流 3:批量审核出站文档集
目标: 将文件夹中的每个 PDF 打包发送给客户或合作伙伴前,逐一审核。
步骤:
- 循环运行:
for f in *.pdf; do python scripts/pdf_auditor.py "$f" --json; done > audit.jsonl - 解析 JSON Lines,检查是否存在元数据泄漏或异常
- 从源文件重新导出有问题的文件
- 重新运行审核,直到全部通过
预计耗时: 每个文件 1-2 分钟。
工具
pdf_auditor.py
使用标准库解析 PDF,无需 pypdf 或 pdfplumber。可检测:
- PDF 版本(从文件头获取)
- 页数(通过扫描
/Type /Page对象) - 文件大小
- 文档信息/XMP 元数据(Title、Author、Subject、Keywords、Producer、Creator、CreationDate、ModDate)
- 加密状态(存在
/Encrypt引用) - JavaScript 指示项(
/JS、/JavaScript、/AA键) - 嵌入文件指示项(
/EmbeddedFiles)
python scripts/pdf_auditor.py document.pdf
python scripts/pdf_auditor.py document.pdf --json
限制:
- 不会提取文本内容——仅用标准库进行纯 PDF 文本提取并不可靠。如需提取文本,请单独安装
pdfplumber或pypdf。 - 无法解密加密文件。
- 只能检测 JavaScript/嵌入文件是否存在,无法检测其行为。
参考指南
references/pdf_handoff_guide.md——向外部发送前应从 PDF 中清理哪些内容;PDF/A 和 PDF/UA 基础知识;常见泄漏模式
模板
assets/pdf_handoff_checklist.md— 发送前 PDF 签核清单
最佳实践
- 重新导出,而非涂黑。 用于“移除”内容的涂黑工具可能会让内容仍可恢复。最安全的做法是从源文档重新生成 PDF,并移除敏感字段。
- 在源文件中清除文档属性。 在 Word 中:文件 → 检查文档 → 文档检查器。在 Pages 中:文件 → 属性。然后导出为 PDF。
- 不要轻信文件名。 名为
Public-Report.pdf的文件可能包含肉眼无法辨别的私人元数据。 - 归档时使用 PDF/A。 PDF/A 会移除 JavaScript 和外部依赖项,让文档适合长期归档。
集成点
- 与
legal/配合,用于经过涂黑处理的合同交接 - 与
c-level-advisor/board-deck-builder配合,用于董事会材料交接 marketing/使用此工具进行白皮书/案例研究交接
评论
支持 Markdown