还在用各种在线PDF转换器担心隐私泄露?Stirling PDF是一个开源的自托管PDF工具,支持合并、拆分、压缩、转换、加密、OCR等几十种PDF操作,部署在自己的VPS上,数据完全不外泄。
前言
日常办公离不开PDF操作——合并合同、压缩扫描件、提取页面、转Word……网上免费工具不少,但你上传的文件会被第三方服务器处理,隐私风险不小。Stirling PDF 是 GitHub 上 5 万+ Star 的开源项目,功能媲美 SmallPDF,部署在自己VPS上用起来既方便又安全。
本文用 Docker 一键部署,5分钟搞定。如果你还没装Docker,先看Docker安装教程。
一、功能一览
Stirling PDF 支持的PDF操作非常全面:
| 分类 | 功能 |
|---|---|
| 页面操作 | 合并、拆分、旋转、裁剪、重新排序、提取页面 |
| 转换 | PDF转图片、图片转PDF、PDF转Word/Excel/PPT、HTML转PDF |
| 安全 | 加密/解密、添加水印、签名、去除密码 |
| 优化 | 压缩、OCR文字识别、修复损坏PDF |
| 其他 | 添加页码、对比PDF、自动重命名、多页合一打印 |
二、Docker 部署
1. 创建目录
mkdir -p /opt/stirling-pdf
cd /opt/stirling-pdf
2. 创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.3'
services:
stirling-pdf:
image: frooodle/s-pdf:latest
container_name: stirling-pdf
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/usr/share/tessdata # OCR语言包
- ./config:/configs # 配置文件
environment:
- DOCKER_ENABLE_SECURITY=false
- SECURITY_ENABLE_LOGIN=false
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=true
- LANGS=zh_CN,en_US
EOF
3. 启动服务
docker compose up -d
首次启动会拉取镜像(约500MB),稍等一两分钟即可。
4. 访问
浏览器打开 http://你的VPS-IP:8080,就能看到Stirling PDF的界面了。
三、配置中文OCR
默认不带中文OCR语言包,需要手动安装。
# 下载中文简体语言包
wget -O ./data/chi_sim.traineddata \
https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata
# 下载中文繁体语言包(可选)
wget -O ./data/chi_tra.traineddata \
https://github.com/tesseract-ocr/tessdata/raw/main/chi_tra.traineddata
# 重启服务生效
docker compose restart
四、启用登录认证
如果VPS有公网IP,建议开启登录认证,防止被他人滥用。
1. 修改环境变量
编辑 docker-compose.yml,修改以下两行:
environment:
- DOCKER_ENABLE_SECURITY=true
- SECURITY_ENABLE_LOGIN=true
- SECURITY_INITIAL_LOGIN_USERNAME=admin
- SECURITY_INITIAL_PASSWORD=你的密码
2. 重启生效
docker compose down && docker compose up -d
五、Nginx 反向代理
如果想用域名访问(比如 pdf.yourdomain.com),需要配置反向代理。推荐使用Nginx Proxy Manager图形化操作,也可以直接写Nginx配置:
server {
listen 80;
server_name pdf.yourdomain.com;
client_max_body_size 500M;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
记得把 pdf.yourdomain.com 的DNS解析指向你的VPS IP。如果VPS的80/443端口被封,可以用Cloudflare Tunnel绕过。
六、使用技巧
批量处理
Stirling PDF 支持一次上传多个文件批量操作,比如批量压缩、批量转图片,效率很高。
自动重命名
上传一堆扫描件,用"自动重命名"功能可以根据PDF内容自动命名文件,整理资料很方便。
API 调用
Stirling PDF 还提供 REST API,可以集成到自动化流程中:
# 压缩PDF
curl -X POST http://localhost:8080/api/v1/misc/compress-pdf \
-F "[email protected]" \
-o output.pdf
完整的API文档访问 http://你的IP:8080/swagger-ui/index.html。
七、常见问题
上传文件大小受限
默认最大上传100MB。在 docker-compose.yml 中增加环境变量:
- MAX_FILE_SIZE=500
然后重启容器。Nginx反代也要同步修改 client_max_body_size。
OCR识别不准确
一是确认已安装对应语言包,二是上传的图片分辨率要够高(建议300dpi以上),三是扫描件尽量保持页面正向。
容器占用内存太大
Stirling PDF 基于 Java,内存占用相对较高(通常500MB-1GB)。如果VPS内存有限(512MB以下),可以限制内存:
deploy:
resources:
limits:
memory: 512M
总结
Stirling PDF 是目前功能最全面的自托管PDF工具,Docker一键部署,中文界面友好,OCR、压缩、转换样样齐全。搭配其他自建应用如AList文件管理、Nextcloud网盘,可以打造一套完整的私有办公平台。
一台便宜VPS就能同时跑这些服务,成本比任何在线PDF工具的会员费都低。