mcpField
P
pdf-toolkit

pdf-toolkit

github.com/borghei文档处理1.0k53 次安装6 天前更新
代码仓库

关于 pdf-toolkit

仅使用标准库审计 PDF 元数据和安全指标的技能,适用于文件交接、入站安全检查及批量核查;不提取文本,也不能解密文件。

主要功能

  1. 01检查 PDF 版本、大小和页数
  2. 02读取文档及 XMP 元数据
  3. 03标记加密和 JavaScript 指示项
  4. 04检测嵌入文件指示项
  5. 05支持 JSON 输出

适用场景

  1. 01对外发送前检查元数据
  2. 02初步评估收到的 PDF 安全风险
  3. 03批量审计文件夹中的外发 PDF

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/borghei/claude-skills --skill pdf-toolkit

安装后在 Claude Code 中输入/pdf-toolkit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
pdf_handoff_checklist.md
references/
pdf_handoff_guide.md
scripts/
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 交给外部人员时,避免泄漏作者身份、先前客户名称或文档历史记录。

步骤:

  1. 运行:python scripts/pdf_auditor.py document.pdf
  2. 检查元数据字段:
    • Author 与发送方一致(而不是之前项目中“Bob 的实习生”)
    • Title 与文档内容一致,而不是遗留的工作标题
    • Producer 不会暴露仅供内部使用的 PDF 工具
    • CreationDate 和 ModDate 对当前交易而言合理
  3. 如果元数据存在泄漏,请从源文件重新导出并清理属性(或使用编辑工具)

预计耗时: 每份文档 2-3 分钟。

工作流 2:PDF 安全筛查

目标: 判断收到的 PDF 是否能在受管理的笔记本电脑上安全打开。

步骤:

  1. 运行审核
  2. 存在 JavaScript 指示项 → 隔离;在沙盒中检查
  3. 存在嵌入文件指示项 → 列出文件类型;如有异常则隔离
  4. 使用非空所有者密码加密 → 通过独立渠道向发送方索要密码
  5. 决策:打开/隔离/拒绝

预计耗时: 每份入站文档 1-2 分钟。

工作流 3:批量审核出站文档集

目标: 将文件夹中的每个 PDF 打包发送给客户或合作伙伴前,逐一审核。

步骤:

  1. 循环运行:for f in *.pdf; do python scripts/pdf_auditor.py "$f" --json; done > audit.jsonl
  2. 解析 JSON Lines,检查是否存在元数据泄漏或异常
  3. 从源文件重新导出有问题的文件
  4. 重新运行审核,直到全部通过

预计耗时: 每个文件 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