




















今天在 GitHub Trending 上看到一个非常实用的项目:Stirling PDF,一个功能极其强大的开源 PDF 处理平台,支持 50 多种 PDF 操作工具,完全私有化部署,再也不用担心文档隐私泄露了。
Stirling PDF(原 s-pdf)由 Stirling-Tools 团队开发维护,是一个企业级开源 PDF 编辑平台。它旨在解决一个核心痛点:PDF 处理的隐私与可控性。市面上大多数在线 PDF 工具都需要上传文件到云端处理,而 Stirling PDF 让你可以在本地或自有服务器上完成所有 PDF 操作。
项目采用开源核心(Open Core)许可模式,基础功能完全免费,当前版本为 2.13.1。
Stirling PDF 采用经典的 Spring Boot 单体架构,但通过 Gradle 多模块设计保持了良好的代码组织:
app/core — 主应用模块,包含 PDF 处理的核心业务逻辑common — 公共工具库,提供跨模块的共享组件proprietary — 专有功能模块(仅在安全未禁用时加载)frontend — 前端工程,包含基于 TypeScript 的编辑器 UI从 build.gradle 中可以看到,项目使用 ext.isSecurityDisabled 闭包动态判断是否加载专有模块,这种设计允许在禁用安全特性的精简模式下运行。
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot 4.0.6 | 最新主版本,搭配 Java 25 |
| PDF 引擎 | Apache PDFBox 3.0.7 | 业界标准的 Java PDF 处理库 |
| 构建工具 | Gradle + Taskfile | 统一的构建和开发命令入口 |
| 安全组件 | BouncyCastle 1.84 | PDF 签名和加密的核心依赖 |
| 前端 | TypeScript + Tauri | 原生桌面客户端方案 |
| 容器化 | Docker | 一行命令即可部署 |
项目在安全方面做得非常细致。在 build.gradle 的 configurations.configureEach 中,可以看到一系列 CVE 强制修复策略:
resolutionStrategy.force "com.google.code.gson:gson:2.13.2"
resolutionStrategy.force "org.mozilla:rhino:1.9.1"
resolutionStrategy.force "org.apache.commons:commons-lang3:3.20.0"
resolutionStrategy.force "commons-io:commons-io:2.21.0"
通过 resolutionStrategy.force 硬编码安全版本号,确保即使传递依赖引入了已知漏洞的旧版本,构建时也会被强制替换为安全版本。同时使用 pixee java-security-toolkit 作为编译时安全检查工具。
PDF 处理的典型数据流为:
整个处理流程完全在用户控制的实例内闭环,这是 Stirling PDF 最大的卖点。
docker run -d -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf
启动后访问 http://localhost:8080 即可使用完整功能。
生产环境建议挂载数据卷:
docker run -d \
-p 8080:8080 \
-v /data/stirling-pdf/config:/configs \
-v /data/stirling-pdf/logs:/logs \
-v /data/stirling-pdf/custom:/custom \
docker.stirlingpdf.com/stirlingtools/stirling-pdf
git clone https://github.com/Stirling-Tools/Stirling-PDF.git
cd Stirling-PDF
task dev
项目使用 Task 作为统一命令入口,task dev 会启动完整的开发环境。
Stirling PDF 的 Web UI 直观易用,打开浏览器后可以直接:
几乎所有 UI 操作都有对应的 REST API。例如通过 API 合并 PDF:
API 文档地址:https://registry.scalar.com/@stirlingpdf/apis/stirling-pdf-processing-api/
在企业场景中,可以构建自动化处理管道:
这种方式适合批量处理合同、发票等标准化文档。
Q: 启动时提示安全相关错误?
Stirling PDF 默认启用安全认证。如果在内网或测试环境不需要认证,可以设置环境变量:
docker run -e DOCKER_ENABLE_SECURITY=false -p 8080:8080 stirlingtools/stirling-pdf
Q: 如何配置 SSO 单点登录?
项目支持 SAML 2.0 SSO,使用 Spring Security SAML 模块(版本 7.0.5,搭配 OpenSAML 5.2.1)。详细配置参考官方文档。
Q: PDF 处理速度慢?
从 JVM 启动参数可以看到项目做了大量 GC 调优:
runtimeArgs = [
"-XX:+UseG1GC",
"-XX:MaxGCPauseMillis=200",
"-XX:G1HeapRegionSize=4m",
"-XX:+ExplicitGCInvokesConcurrent",
"-XX:+UseStringDeduplication",
"-XX:+UseCompactObjectHeaders"
]
如果仍需提升性能,可以增加容器内存限制并调整 G1GC 参数。
Q: 转换格式支持不全?
部分格式转换依赖 LibreOffice,需要确保 Docker 镜像中包含 LibreOffice。官方镜像已内置,自定义部署时需要额外安装。
Stirling PDF 是目前开源社区中功能最全面的 PDF 处理平台之一。它最大的优势在于 隐私可控——所有处理都在本地完成,不需要将敏感文档上传到第三方服务。50 多种 PDF 工具覆盖了日常和企业的绝大多数需求,Docker 一键部署和完善的 REST API 更是让集成变得极其简单。
对于个人用户,它是替代 Adobe Acrobat 的免费方案;对于企业用户,它是构建文档处理服务的理想基础。如果你正在寻找一个可私有化部署的 PDF 工具,Stirling PDF 值得重点关注。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。