关于 pdfstudio
PDF Studio 是本地 PDF 编辑器,提供 MCP 服务和 CLI,供文档工作流使用。其 10 个 Agent 工具共用同一引擎,文档内容不会通过网络发送。
主要功能
- 01改写 PDF 内容流中的现有文本
- 02填写表单并添加签名或批注
- 03删除敏感内容并验证导出文件
- 04运行 OCR 和可选的设备端 AI
- 05比较 PDF 并管理页面
适用场景
- 01不上传文件即可修改合同文本
- 02删除敏感内容并检查导出结果
- 03通过本地 OCR 搜索扫描页面
MCP 相关
`pdfstudio-mcp` 服务通过 stdio 暴露 10 个 PDF 工具。它使用同一本地引擎,不会通过网络发送文档内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
10收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 相对于服务端根目录的 PDF 路径 |
详细介绍
PDF Studio
一款无需后端的 PDF 编辑器。它会在浏览器中重写文件的内容流。
▶ 在线试用 — 无需安装、无需上传、无需账号
直接使用引擎。 MCP 服务通过 npm 安装;CLI 从仓库构建。
npx pdfstudio-mcp --root ./docs --read-only # MCP: 10 PDF tools over stdio, no API key
npx pdfstudio info contract.pdf # CLI — from a clone, after `npm run build:packages`
MIT · TypeScript · 零服务器 · 整个处理流程都可以在此仓库中审查。
🎬 观看实际演示(31 秒)——原位编辑文本、真正涂黑内容、添加便笺、高亮、比较两份 PDF 并打印。录制自在线应用;任何内容都不会离开浏览器。

真实录制:上方的标语是实时重新输入的——文件中的原始文本操作符被重写,而非叠加在上方。
觉得有用?点击页面顶部的星标,可以帮助其他人发现它。
快速开始
在浏览器中使用,无需安装: navigatorslab.com/pdf-studio
使用 Docker 自托管,一条命令:
docker run -p 8080:80 ghcr.io/kayforkind/navigatorslab-pdf-studio:latest
# → http://localhost:8080
从源代码使用 CLI(三条命令):
git clone https://github.com/Kayforkind/NavigatorsLab-PDF-Studio && cd NavigatorsLab-PDF-Studio
npm install && npm run build:packages
npx pdfstudio info contract.pdf
问题
大多数“免费”PDF 编辑器都采用同一种做法:把你的合同或身份证上传到别人的服务器,编辑三页,然后在你按下保存的那一刻,弹出付费墙、水印、页数限制或注册页面。(坦诚的例外是可自托管的工具——但那需要你自己运行基础设施。)真正能修改现有文本的桌面编辑器则需要订阅。
解决方案
PDF Studio 100% 在浏览器中运行。你的文件在自己的设备上打开、编辑和保存——没有服务器需要上传文件。与大多数免费编辑器不同,它不会假装能编辑:编辑工具会直接重写页面的内容流。文件中的原始文本会被删除,你输入的替换内容会作为真正的矢量文本写入。不是叠加层,也不是覆盖在上方的文本框。旧字节不复存在。
30 秒即可试用:打开在线应用,拖入任意 PDF,按 E,点击任意一行已有文本,然后重新输入。
功能介绍
| ✏️ 真正的文本编辑 | 点击任意一行或表格单元格,然后重新输入。导出为真正的矢量文本,可搜索且打印清晰。 |
| 📝 表单 | 填写真正的 AcroForms(文本框、复选框、单选按钮、下拉框),然后将其扁平化,让其他人无法更改你的答案。 |
| 🖋️ 签名和批注 | 签名板、高亮、画笔、箭头、形状、便签、图像印章——全部是真正的矢量内容。 |
| 🖤 涂黑 | 真正的涂黑——导出时,被遮盖的文本会从文件中删除,而非仅仅覆盖。(白色遮盖仅有视觉效果;敏感数据请使用涂黑功能。) |
| 🔠 OCR | 通过设备端 Tesseract,将扫描页面转换为可编辑文本(EN/ES/FR/DE)。绝不上传。 |
| 🤖 设备端 AI | 针对文档提问;真正的大模型通过 WebAssembly 在浏览器中运行。你的数据绝不会离开设备。 |
| ⚖️ 修订对比 | 添加两个版本,即可获得逐行差异。付款条款是否有变化?现在你就能知道。 |
| 📄 页面 | 重新排序、旋转、合并、拆分、复制、删除。在导出时添加页码、水印、页眉和页脚。 |
| 📱 随处使用 | PWA——可安装到手机或桌面设备,支持离线使用,并会自动保存和恢复你的会话。 |
截图 — 上述功能均为运行中的应用实际截图
完整编辑器——永久免费,设计上注重隐私

编辑提示——原文中的每一行都是可点击的目标

批注——带颜色和不透明度控件的下划线工具

真正的涂黑——被遮盖的文本会从文件中删除,而非仅仅覆盖

签名板——使用鼠标、触控板或触摸屏绘制

签名——已盖到页面上

表单——值已写入真正的 AcroForm 字段

对比——两个版本的逐行差异

导出——页面范围、拆分、印章、文档属性

设备端 AI——针对文档提问,无需上传

移动端——底部工具栏、全宽页面

工作原理
所有操作都在浏览器中完成——文件会在你自己的设备上打开、编辑和保存。处理流程如下:
- 打开 — PDF 会载入浏览器内存,不会上传任何内容。
- 编辑 —“编辑”工具会重写页面的内容流:从文件中删除原始文本,并将替换内容作为真正的矢量文本写入。
- 填写并签名 — 将值填入实际的 AcroForm 字段;签名会绘制在页面上。导出时将表单扁平化,以固定内容。
- OCR — 扫描页面会通过设备端 Tesseract 添加文本层,使其可搜索、可编辑,也可涂黑。
- 涂黑 — 在需要删除的内容上绘制方框。在编辑器中,这些方框只是标记为待涂黑(带斜线):这是一种承诺,并非真正删除。此时尚未删除任何内容。
- 导出 — 文件会从头重建。涂黑会在这一步销毁内容:完全被覆盖的文本会从内容流中删除(递归处理嵌套的表单对象);任何无法确认可安全移除的内容(部分覆盖的文本、图像、特殊字体)都会导致相应页面被渲染为像素图,并将方框直接烧录到图像中,原始内容则会丢弃;方框下的表单值、注释、无障碍树文本、元数据、XMP、附件、JavaScript 和缩略图都会被清除。随后会扫描成品文件,检查多种编码中的所有被覆盖字符串——如果仍能恢复任何已涂黑内容,就不会交付文件;导出会明确失败,而不会交给你一个仍会泄露内容的文件。
导出后,应用会显示验证报告(已涂黑区域、已检查字符串数、可恢复内容:零)。相比之下,白色遮盖仅改变视觉效果——它会覆盖内容,但不会将其移除。敏感数据请使用涂黑功能。
完整说明:工作原理 — 文档
对比
PDF Studio 是一款无需设置的工具,提供完整编辑器,并且绝不会上传你的文件。
| PDF Studio | Adobe Acrobat Pro | Stirling-PDF | 免费网页编辑器¹ | |
|---|---|---|---|---|
| 价格 | 免费,MIT | 约 US$19.99/月(按年订阅,按月付费)² | 开放核心,可免费自托管 | 免费版有限制,且含广告 |
| 文档存放位置 | 无处可去——文件绝不会离开浏览器 | Adobe 的服务器 | 你自己的服务器 | 它们的服务器 |
| 真正的原位文本编辑 | 支持 | 支持 | Alpha | 不支持——只能批注/叠加 |
| 涂黑 | 删除字节,并在导出前验证 | 支持(Pro) | 支持 | 因产品而异——请自行验证 |
| 面向 Agent 的 CLI + MCP | 支持——同一引擎,100% 本地运行 | 不支持 | 不支持 | 不支持 |
| 无需设置 | 支持 | 不支持 | 不支持(需要 Docker) | 支持 |
| 离线使用 | 支持(PWA) | 仅桌面端 | 你的服务器 | 不支持 |
| 开源 | MIT | 不开源 | 开放核心 | 不开源 |
¹ Smallpdf、iLovePDF、PDF24 等。各产品彼此不同;此行描述的是这一类别,而非某个具体产品。² Adobe 公布的方案,核对日期为 2026-10-08——价格和方案可能变化。
完整且附有来源的对比:COMPARISONS.md · 网页版本。
**开发者视角的区别:**这里的涂黑不是一种承诺,而是一道关卡。导出器会扫描自己的输出,检查 UTF-8、UTF-16BE/LE 和十六进制编码中的所有被覆盖字符串,并同时检查交付的字节和解压后重新序列化的内容。如果仍有任何内容可恢复,就不会生成文件。
需要如实说明的限制
PDF Studio 目前还无法做到以下几点:
- 文本编辑需要实际的文本层。扫描页面需先经过设备端 OCR 处理。
- 替换文本使用 Helvetica 字体度量,因此对于特殊的嵌入字体,只能做到近似匹配,无法保证字形完全一致。
- 设备端 AI 使用小型模型(0.5B 到 1B)。它能很好地总结文档并回答相关问题,但并非前沿模型。
- 不支持实时协作,也不提供云同步。自动保存仅保存在你使用的浏览器中。
- 签名是绘制后放置在页面上的签名,不是经认证的数字签名。
隐私——从架构上确保绝对隐私
| 问题 | 答案 |
|---|---|
| 我的文件会被发送到哪里? | 不会发送到任何地方。 没有上传端点。编辑时打开开发者工具:文档字节永远不会离开你的设备。 |
| 会收集我的任何数据吗? | 不会。 没有账户,也不会分析你的文档。会话会在你的浏览器本地自动保存。 |
| 会下载什么? | 应用本身,以及可选的公共 AI/OCR 模型权重(首次获取后会缓存)。你的文档不会经过网络传输。 |
| 可以断网隔离使用吗? | 基本可以。 应用和 OCR 引擎已打包,可离线运行。只有可选的 AI 助手会下载模型权重(首次使用时从 Hugging Face 下载)。在离线网络中请跳过 AI 助手;目前还不能将模型源改为内部镜像。 |
安全性
安全评估——2026-09-28——总体评级 A−。 每项声明都已对照源代码核实。完整评估:SECURITY_ASSESSMENT.md · Agentic(CLI/MCP)补充说明 · 报告政策。
剩余风险(如实说明): 自动保存的内容以明文形式存储在你的磁盘上,因此在共用设备上使用后请清除;AI 模型权重通过 TLS 从 HuggingFace 获取,但未经哈希验证。这两种情况都不会让数据离开你的设备。
发现问题了吗?请私下报告——参见 SECURITY.md。
面向开发者
git clone https://github.com/Kayforkind/NavigatorsLab-PDF-Studio
cd NavigatorsLab-PDF-Studio
npm install
npm run dev # http://localhost:5199
npm test # 88 app tests
npm run test:packages # core, CLI, and MCP tests (builds packages first)
npm run build # → dist/ (relative base: works at domain root, subpath, or CDN)
技术栈: TypeScript · React 19 · Vite · pdf.js(渲染)· pdf-lib(写入)· Tesseract.js(OCR)· WebLLM(AI)· vite-plugin-pwa。零后端。
三个接口,一个引擎: 浏览器应用、pdfstudio CLI(9 个命令)和
pdfstudio-mcp(10 个工具,可独立发布——参见 packages/mcp)。
三者都使用 pdf.js 解析,并以相同方式重写内容流;它们都不会在网络调用中发送文档字节。
额外工具: packages/redact-check——拖入 PDF,查看黑框下仍隐藏的文本。这是一个小巧、独立的示例,说明仅在文本上涂黑的“涂黑”毫无意义。
有趣的工程设计: 每个标记都位于页面的 PDF 用户空间中——屏幕上的叠加层和导出器共用同一套感知 CropBox 的变换计算(src/lib/viewport.ts),并通过针对 pdf.js 自有 PageViewport 的测试进行验证,其中包括偏移的 MediaBox/CropBox 原点;这些原点会导致大多数自制编辑器出错。文本编辑通过内容流分词器处理:删除原始字形的显示文本运算符,并使用 TJ 字距调整写回替换文本,以重现原始间距。Tesseract、pdf.js workers 和 WASM 都在严格的内容安全策略下运行,处理文档数据时不进行任何网络调用。
测试套件(88 项): i18n(语言检测、切换、持久化、清除、es/de/fr/pt 目录完整性)· 文档模型操作与撤销语义 · 在 0/90/180/270° 下与 pdf.js 保持视口一致 · 使用 pdf.js 重新解析的导出往返测试 · LCS 差异引擎 · 内容流分词器 + 深层文本重写/矢量涂黑往返测试 · 表格单元格命中拆分。
适合新手的问题会标记为 good first issue——参见 CONTRIBUTING.md。
帮助翻译
PDF Studio 提供英语、西班牙语、德语、法语和葡萄牙语版本(葡萄牙语是机器起草的初稿,等待母语人士审核),整个 UI 都可本地化——应用内置了翻译,因此切换语言完全可以离线完成。如果你懂其他语言,也可以帮忙:
- **无需编写代码:**翻译由 Crowdin 管理(链接见置顶议题)——在浏览器中翻译或为字符串投票。
- **通过代码参与:**编辑
src/locales/<lang>/translation.json(从src/locales/en/translation.json复制英语键,保留所有{{placeholder}}和<b>/<code>标签),然后运行npm test -- src/lib/i18n.test.ts——目录完整性测试会逐个键与英语文件进行比对。
创建 JSON 文件并在 src/i18n.ts 的 LANGUAGES 中注册语言后,系统会自动启用新语言。
Agent 使用
PDF Studio 提供两个原生 Agent 接口,它们与应用使用完全相同的内容流引擎。无需新增解析代码,不进行网络调用,文档字节不会离开本机。
npm install
npm run build:packages
在仓库根目录中运行 npx pdfstudio … 使用 CLI,或者通过 npm link -w packages/cli 全局安装,然后在任意位置调用 pdfstudio。构建后,MCP 服务位于 packages/mcp/dist/index.js。
CLI 和 MCP 参考
所有命令和工具均已记录在文档网站中:CLI 参考 · MCP 参考。
主要 CLI 命令:pdfstudio info、extract-text、search、edit-text、redact、merge、split、rotate、pages。MCP 服务提供对应的 pdf_* 工具。为遵循最小权限原则,--read-only 只注册三个读取工具。路径会在 --root 内解析为真实路径,并拒绝通过符号链接逃逸。
约定:- 从标准输入读取,-o - 向标准输出写入,报告输出到标准错误。退出代码:0 表示成功,1 表示错误,2 表示没有匹配项或没有任何更改。读取命令可使用 --json 进行脚本处理。
以下示例建议默认使用 --read-only。它只注册三个读取工具(pdf_info、pdf_extract_text、pdf_search_text),因此 Agent 无法修改文件。只有当 Agent 需要编辑工具时才移除此标志。
Claude Code:
claude mcp add pdfstudio -- node /path/to/NavigatorsLab-PDF-Studio/packages/mcp/dist/index.js --root /path/to/your/docs --read-only
Cursor / Cline / 任意 MCP 客户端(mcp.json):
{
"mcpServers": {
"pdfstudio": {
"command": "node",
"args": ["/path/to/NavigatorsLab-PDF-Studio/packages/mcp/dist/index.js", "--root", "/path/to/your/docs", "--read-only"]
}
}
}
**Agent 隐私保证:**CLI 和 MCP 服务不会进行任何网络调用。与 Web 应用一样,解析(pdf.js)、编辑(内容流重写)和写入(pdf-lib)都在进程内完成。脱敏会从文件中删除文本操作符,并重建输出文件,以一并清除孤立字节。
**提示词注入说明:**PDF 内容是不可信输入。提取和搜索结果会以分隔符标记为数据。Agent 应将文档文本视为数据,而非指令。如果你的 Agent 框架会将工具输出回显到上下文中,请注意这一边界。
使用 Docker 自托管
无需后端,因此只需一条命令即可自托管。每次发布时都会将镜像推送到 GHCR:
docker run -d -p 8080:80 --name pdf-studio ghcr.io/kayforkind/navigatorslab-pdf-studio:latest
# → http://localhost:8080
或者自行构建:
docker build -t pdf-studio .
docker run -d -p 8080:80 pdf-studio
容器通过 nginx 提供静态 dist/ 构建版本——你的文档仍不会离开运行该容器的机器。
构建者
Kazim Raza(@Kayforkind)——PDF Studio 的创建者和 NavigatorsLab 的创始人。
常见问题
- 真的免费吗?有什么隐情吗? — 免费,采用 MIT 许可,没有隐情。无需账号,没有水印,没有上限,也没有“专业版”。你可以分叉、自托管并发布。
- 这和其他免费 PDF 编辑器有什么不同? — 其他编辑器只能让你添加注释(在内容上叠加文本框)。PDF Studio 会重写内容流:从文件中删除原始文本运算符,并将替换内容作为真正的矢量文本写入。
- 有哪些实际限制? — 编辑文本需要文本层(纯扫描件需要使用 OCR 工具)。替换文本使用 Helvetica 度量数据——效果近乎一致,但无法与特殊嵌入字体的字形完全吻合。本地设备上的 AI 运行小型模型(0.5B–1B):很擅长总结文档,但不是前沿模型。
许可证
MIT — 可免费用于个人用途、商业用途以及两者之间的任何用途。这正是我们的初衷:LICENSE。
免费。开源。凭架构保障隐私,而非依赖政策。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。