作为一个经常和 PDF 打交道的人,我其实被各种“PDF 编辑器”折磨了很多年。要么打开就弹广告,要么导出还带水印,要么想把扫描件文字识别出来却得开会员。后来我在 GitHub 上发现了一个叫 Stirling-PDF 的开源项目,亲自在 Windows 上部署完用了一段时间,确实有“相见恨晚”的感觉。它本质上就是一个自托管的 PDF 工具箱,部署好之后,你把文件传到网页里就能合并拆分、压缩转换、OCR 识别、加签加水印,功能非常全。更关键的是,它跑在你自己的电脑上,数据不出内网,没有在线工具那种隐私负担,局域网里的同事也能一起用。这篇文章就把完整的 Windows 部署过程、外部访问方案和一路上踩过的坑都写出来,给正准备入手的你做个参考。
1. 为什么在 Windows 上部署一个私人 PDF 工具箱
1.1 从一段被 PDF 工具折磨的经历说起
我最早处理 PDF 的方式,和大多数人差不多:搜一个“免费 PDF 在线转换”的网页,传上去,等待上传,再下载结果。直到有一次,我把一份带客户信息的合同扫描件传到一个在线识别网站,第二天就收到了精准的推销电话,从那以后我对在线工具就一直有戒心。后来我买了一台性能还不错的 Windows 台式机,平时就做做文件整理和数据处理,于是我开始琢磨:能不能在这台机器上自己搭一套 PDF 处理服务,所有转换动作都在本地完成,不用把文件传到别人的服务器上?Stirling-PDF 就是在这个背景下进入我视野的。
Stirling-PDF 是一个基于 Spring Boot 的开源项目,它的定位就是“PDF 处理瑞士军刀”。我在本地实际用下来,日常能想到的场景它基本都覆盖了:合并多个 PDF、按页拆分、压缩体积、把图片转成 PDF、把 PDF 转成 Word,这些是最基本的;高级一点的还有 OCR 文字识别、添加水印、插入页码、表单填写、数字签名、加密解密、元数据清理、页面裁剪和旋转。整个界面是网页形式,不需要安装客户端,用浏览器打开就能操作,对非技术同事也很友好。
相比买年费动辄几百块的商业软件,Stirling-PDF 免费且开源,代码托管在 GitHub 上,你可以自己审查逻辑,不放心的时候甚至可以断网使用。把它部署在 Windows 上,还有一层好处:Windows 桌面生态里有大量扫描、打印、Office 文档工具,文件在本地流转非常自然。无论是个人使用,还是放在一个小团队内部做集中式 PDF 处理,这个方案都够用。
1.2 Stirling-PDF 到底能干什么,和在线工具相比强在哪
我整理了 Stirling-PDF 里最常用的几类功能,你感受一下它的覆盖面:
- 文档操作:合并、拆分、旋转、裁剪、删除页面、重新排序、按大小或页码分拆。
- 内容处理:添加文本、图片水印,插入页码标题,添加页眉页脚,清理元数据。
- 转换能力:PDF 转图片、图片转 PDF、PDF 转 Word、Word 转 PDF、PDF 转 CSV,以及 HTML 转 PDF。
- 高级功能:OCR 文字识别、PDF 表单填写、页面签名、加密解锁、书签整理、颜色校正。
- 界面体验:多国语言支持(包括简体中文),拖拽上传,批量任务处理,操作记录自动保存。
这些功能如果是用在线工具来做,单次处理一个文件就够烦了,批量处理基本是付费专享。而 Stirling-PDF 是本地算力在处理,不会限速,也不会因为你一周处理几百个文件就逼你开会员。我实测把一个 50 页的 PDF 转成 Word,在普通台式机上也就几秒钟,速度比上传到云端再下载快非常多。
另外一个容易被忽略的点是隐私。很多行业的数据是不能传到外部服务的,比如合同、体检报告、企业内部规范文件。本地部署意味着整个处理链路只经过你的 Windows 机器,文件不会被第三方看到,这一点对注重数据安全的人来说是决定性的优势。
1.3 我最终选择 Docker 方式部署的三个理由
Stirling-PDF 的官方文档提供了两种主流安装方式:一个是直接用 Docker 镜像跑容器,另一个是下载 Jar 包然后用 Java 环境启动。我在 Windows 上两种方式都试过,最后长期使用的是 Docker 方式,理由有三点。
第一,环境隔离。Stirling-PDF 依赖 Java 运行时、OCR 引擎、LibreOffice 组件,如果直接跑 Jar 包,Windows 上缺一个依赖就启动失败,而且容易跟你现有的 Java 环境互相干扰。Docker 镜像把这些依赖全部打包好了,拉下来就能跑,不用关心底层库的版本冲突。
第二,升级与回滚方便。这个项目更新很快,几乎每周都有新版本。用 Docker 部署,升级就是拉新镜像、重启容器两条命令;如果用 Jar 包,你要手动下载新包、覆盖旧包、重启进程,遇到问题还得找回上一个版本,麻烦不少。
第三,配置管理更清晰。端口映射、数据目录挂载、环境变量、OCR 语言包,这些用 Docker Compose 写进一个文件里,整个服务的配置一目了然。换机器迁移的时候,把这个文件带上,另一台机器上很快就还原出一模一样的环境。
当然,Docker 方式也有代价,那就是需要先安装 Docker Desktop,对资源占用有一点要求。如果你不想装 Docker,我后面也会给出一套纯 Jar 包的备选方案,两条路都能走到目的地。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署前的准备:Windows 环境与能用的“容器化”方案
2.1 Windows 下部署的几种形式
先说结论:在 Windows 上部署 Stirling-PDF,本质上就是想办法让它跑起来,而它是个 Java 服务,所以最低要求是有一个能运行 Java 17 的环境。围绕这个目标,大致有三条路:
