项目地址
Stirling PDF 是一个功能强大的开源 PDF 编辑平台。可作为个人桌面应用运行、在浏览器中使用,或部署在自有服务器上并提供私有 API。无需将文档发送到外部服务,即可编辑、签名、涂黑、转换和自动化处理 PDF。

核心能力
随时随地工作 - 支持桌面客户端、浏览器界面,以及带有私有 API 的自托管服务器。 50+ PDF 工具 - 编辑、合并、拆分、签名、涂黑、转换、OCR、压缩等。 自动化与工作流 - 界面内置无代码流水线,并提供 API,可处理数百万份 PDF。 企业级能力 - 支持 SSO、审计,以及灵活的本地部署。 开发者平台 - 几乎所有工具均提供 REST API,便于集成到现有系统。 多语言界面 - 支持 40 多种语言。
主要 PDF 处理技术对照
快速开始
docker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf然后打开:http://localhost:8080[1]
以下是对 Stirling-PDF 项目源代码的仔细分析,提取出的关键技术栈与架构(基于当前 main 分支的 DeveloperGuide、构建文件、package.json、pyproject.toml、模块结构与依赖声明)。
关键技术
现在的 Stirling-PDF 已经不是早期那种“Spring Boot 塞一堆页面”的形态了。它拆成了几块:
前端是完整的 React SPA 后端是 Spring Boot 还有一个独立的 Python FastAPI 引擎负责 AI 相关能力 桌面版则用 Tauri 包了一层
文件处理尽量无状态——上传后在内存或临时目录里干活,做完就删,这点在隐私敏感场景里很实在。
后端:PDFBox 扛大梁,外部工具当帮手
后端主语言是 Java,跑在 JDK 25 上,框架是 Spring Boot,内嵌 Jetty。
真正干重活的是 Apache PDFBox。合并、拆分、旋转、加页码、改元数据、验签这些核心操作,基本都靠它。另外还用了 JPDFium(自己维护的 PDFium 绑定)、veraPDF(做 PDF/A 校验)、Tabula(抽表格)。
重一点的功能则交给外部命令行工具:
LibreOffice 负责 Office 文档互转 qpdf、Ghostscript 做压缩和优化 Tesseract 做 OCR
启动时会探测这些工具在不在,不在就把对应功能组关掉。这种“能用就开,不能用就藏”的做法,比硬依赖整套环境要灵活得多。
安全方面可选 Spring Security,加密和签名用 BouncyCastle。整体是典型的 Java 后端思路,稳,也方便企业部署。
前端:已经彻底重写成现代 SPA
早期用的是 Thymeleaf,现在完全换成了 React 19 + TypeScript,构建工具是 Vite。
UI 主用 Mantine,样式用 Tailwind。PDF 相关的客户端能力主要靠:
PDF.js 负责渲染和预览 pdf-lib 做轻量编辑 还有一套 @embedpdf 插件,覆盖批注、涂黑、缩略图、搜索等
本地用 IndexedDB 存文件和缩略图,一些耗时操作丢到 Web Worker。新增一个工具的流程也比较规范:写参数 Hook、操作 Hook、注册到工具列表、补翻译,结构清晰。
这种前后端分离之后,交互体验明显上了一个台阶,也方便做桌面端复用。
桌面和 AI 引擎
桌面版用的是 Tauri(Rust + 前端),还带了裁剪过的 JRE,可以本地跑,也能连远程服务器补全高级功能。
另外还有一个 engine 目录,是用 FastAPI 写的 Python 服务,依赖 Pydantic-AI、向量库等,主要给 AI 文档处理用。目前它和 Java 后端通过代理通信,属于比较新的扩展方向。
项目地址
https://github.com/Stirling-Tools/Stirling-PDF参考资料
http://localhost:8080: http://localhost:8080/
夜雨聆风