ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

844 项功能逐项核验:PdfCraft 纯 Rust PDF 编辑器完整指南

844 项功能逐项核验:PdfCraft 纯 Rust PDF 编辑器完整指南

844 项功能逐项核验:PdfCraft 纯 Rust PDF 编辑器完整指南

【免费下载链接】pdfcraftPdfCraft: An open-source PDF reader and editor written by scratch in pure Rust项目地址: https://gitcode.com/gh_mirrors/pr/pdfcraft

983 份真实世界的 PDF 文件全量过一遍,崩溃次数为零——这是 PdfCraft 给自己设的底线。PdfCraft 是一个用纯 Rust 从零写成的开源 PDF 阅读与编辑工作台,目标很直接:把 Adobe Acrobat Pro 的离线功能一项项重做,无账号、无遥测,文档不离开本机,macOS、Windows、Linux、FreeBSD 和浏览器通吃。

一分钟看懂:5 个关键数字

指标数字怎么来的
功能追踪规模844 项(P0 252 / P1 329 / P2 197 / P3 43)机器可核对清单
已交付448 项(53%),另有 100 项部分完成清单逐项核对
P0 核心功能252 项中 228 项交付,21 项部分完成清单逐项核对
实际可用度全流程用户约 50%,主流用户约 55%,基础用户约 66%加权估算
真实文件语料983 份 0 崩溃;开/改/存往返 958 份通过每轮 CI 复跑

账面过半,实际工作量只走完三成到三成五——剩下的恰好是渲染引擎、既有文本编辑这类最难啃的部分。项目方在 ROADMAP.md 里把这两套数字分开列,这正是它值得跟踪的原因。

现在就能做什么:四块已交付能力

📖 打开和查看,稳到可以当主力。983 份真实 PDF 语料 0 崩溃,损坏文件会自动重建交叉引用表;520 页长文档的全文搜索,缓存命中时只要 20 毫秒左右。

🗂 页面管理是一等公民。旋转、删除、插入空白页、拖拽调序,每步都可撤销;合并时书签、表单、图层、附件全部保留,合并后页面与源文件逐像素一致。CLI 一条命令就能拆文件:pdfcraft-cli split report.pdf --every 10 --out-dir parts/。

📝 表单填写与制作都通了。所有字段类型可填可建,格式/验证/计算脚本在沙箱 JavaScript 引擎里按 Acrobat 的事件顺序原生执行;表单数据支持 FDF、XFDF、XML、CSV 四种格式导入导出。

🔐 加密与签名覆盖主流场景。PDF 标准安全机制从 40 位 RC4 到 AES-256(R2–R6 全部修订版)完整实现;数字签名做到 PAdES B-B 签署与验证,支持 macOS 钥匙链和 Windows 证书库;编辑式删除(redaction)和隐藏信息清除会整文件重写。

自动化这块值得一提:123 个无头工具覆盖打开、编辑、批注、表单、保护全流程,MCP 服务器默认关闭、需显式启动且只走 stdin/stdout,所有文件操作可限制在单个目录内。

老实说,还差什么

docs/gaps.md 把每条缺口按"对用户的代价"排了序,摘四条最要紧的:

  1. 渲染引擎不是自研的。缺口:页面目前由借来的hayrocrate 绘制,背着 61 个本地补丁。为什么难:用户看到的每一页都压在这上面,而渲染保真度至今没有和 Acrobat 并排量化的框架。往哪走:先建比对框架(110–190 小时),再决定自研modelcrate 还是引入别的引擎。
  2. 既有文本编辑在真实文件上脆弱。缺口:改别人写的文本时,子集字体缺字形、中日韩和从右到左文字、旋转文本都会踩坑。为什么难:PDF 不存"文字",只存"怎么画",重排等于反推版式。往哪走:这是全项目最长的一根杆(M7,100–180 小时)。
  3. OCR 只认无重音拉丁文。缺口:非拉丁语种的扫描件还读不出来。为什么难:每种语言都要模型加语言覆盖,模型分发还要过校验。往哪走:M10 排期,95–175 小时含 Office 互转。
  4. 专业签名链路断在半路。缺口:没有时间戳服务器、在线 LTV 和 PKCS #11 智能卡。为什么难:机构信任链涉及硬件与外网协议。往哪走:M9 收尾,40–70 小时。

另外两个隐性短板不展开但要知道:Office 导入暂缺、Word 导出会丢版式;模糊测试仍在持续挖出崩溃,目前逐条修并沉淀为回归测试。

这个数字是怎么算出来的

核心是一份纯文本清单 parity/acrobat-features.toml:每项功能标注优先级、所属领域、状态,shipped的定义是"可用且至少引用了一个具体测试",证据字段里写的是测试函数全名。cargo xtask parity一条命令自动核对全部声明,人拍不了脑袋。

语料侧再叠两道验证:983 份 pdf.js 测试文件的打开/渲染扫描每轮 CI 都跑,保存输出用 qpdf 独立检查,文本抽取拿 pdftotext 做参照(词级 F1 0.98)。而"实际可用度 50%"是另一套口径——按维度加权估算,与功能计数分开呈现,ROADMAP.md 里两种数字各归各位。

接下来的路:按优先级排序

官方排期(与 docs/gaps.md 一一对应):

  1. 清积压:崩溃与错误结果报告、补中文 Web 界面字形(50–90 小时)
  2. 建与 Acrobat 的保真度比对框架,敲定渲染引擎去留(110–190 小时)
  3. 打通既有文本与图片的编辑(100–180 小时)
  4. OCR 多语言化 + Office 互转(95–175 小时)
  5. 预检与 PDF/A/X/UA、签名 LTV、无障碍自动打标
  6. 1.0 打磨:性能预算、右到左、纯键盘操作

时间估算:按当前实测速度(约 1000 行保留代码/代理小时),到 beta 还需约 400–700 小时代理工时;全量对齐约 780–1,400 小时,3–5 个代理并行折合 300–550 小时墙钟时间,即约 2–4 个月。

跑起来:3 条命令

git clone https://gitcode.com/gh_mirrors/pr/pdfcraft cd pdfcraft cargo run --release -p pdfcraft -- some.pdf

构建需 Rust 1.95+;截图可用cargo xtask screenshots重新生成。架构上值得说一句:核心引擎不依赖 UI,crates/engine/ 之上的解析层、自动化层都是可复用库 crate,CLI 和无头 MCP 走同一套引擎,二次开发不需要碰界面。

一句话判断

只开文档、批注、改页面的,今天就能换;要深度编辑既有文本或多语言 OCR 的,再等两三个月;机构级 PDF 签名先观望。想验证?先去仓库里把那条 split 命令敲一遍。

【免费下载链接】pdfcraftPdfCraft: An open-source PDF reader and editor written by scratch in pure Rust项目地址: https://gitcode.com/gh_mirrors/pr/pdfcraft

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进