Stirling PDF 是个开源的PDF工具箱,能合并、拆分、压缩、转换格式、加解密、OCR,甚至还能改页面顺序和旋转。不需要注册,数据在本地处理,适合自己搭一个内部用或者给团队用。
部署方式很简单,我直接上Docker。
前提条件
– 一台有Docker的服务器(我用雨云的2C4G实例,跑这个绰绰有余,性价比高,稳定)
– 域名的SSL证书(如果有公网需求,没有就局域网用)
直接启动
docker run -d \
--name stirling-pdf \
-p 8080:8080 \
-v /opt/stirling-pdf/data:/usr/share/tesseract-ocr/4.00/tessdata \
-v /opt/stirling-pdf/config:/configs \
-e DOCKER_ENABLE_SECURITY=false \
-e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \
frooodle/s-pdf:latest
解释几个参数:
– `DOCKER_ENABLE_SECURITY=false` 关闭登录,适合内网用。公网记得开,后面说。
– `INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false` 不装额外依赖,减少镜像体积,OCR功能会弱一些。如果需要OCR中文,改成true。
– 挂载两个卷:tessdata是OCR语言包目录,configs是配置文件。
启动后浏览器访问 `http://你的IP:8080` 就能看到界面。
配置HTTPS和反向代理
公网用必须套HTTPS。我习惯用Nginx反代,配置如下:
server {
listen 443 ssl;
server_name pdf.yourdomain.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
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;
# 上传文件大小限制,默认1M不够用
client_max_body_size 100M;
}
}
注意 `client_max_body_size` 要设大,PDF文件随便几十M。
开启登录认证
如果公网暴露,必须加密码保护。修改 `configs/settings.yml`(没有就创建):
security:
enableLogin: true
# 自定义用户名密码,格式:用户名:密码
users:
- username: admin
password: admin123
- username: user1
password: pass456
改完重启容器:
docker restart stirling-pdf
OCR中文支持
默认OCR只有英文。要识别中文PDF,需要下载中文语言包:
wget https://github.com/tesseract-ocr/tessdata/raw/main/chi_sim.traineddata
mv chi_sim.traineddata /opt/stirling-pdf/data/
重启容器,上传PDF后选择语言”chi_sim”即可。
常用操作
– 合并PDF:上传多个文件,拖拽排序,点合并。
– PDF转Word:上传后选格式,转换完直接下载。
– 压缩PDF:选压缩等级,一般选”中等”效果最好。
– 加解密:设置密码,可以限制打印、复制。
性能调优
PDF处理吃CPU,尤其是OCR和压缩。如果并发高,可以加内存限制:
docker run -d --memory="2g" --cpus="2" ...
雨云的机器我实测同时处理3个100页PDF,CPU占用60%,内存1.5G,够用。
备份策略
配置文件和OCR数据都在挂载卷里,直接打包:
tar -czf stirling-pdf-backup.tar.gz /opt/stirling-pdf/
每周crontab跑一次就行。
踩坑记录
1. 上传大文件超时:Nginx `proxy_read_timeout` 设大点,比如600s。
2. OCR识别乱码:确认语言包版本和容器内tesseract版本匹配,我用latest镜像没问题。
3. 中文文件名乱码:容器内默认locale不是UTF-8,加环境变量 `-e LANG=zh_CN.UTF-8`。
Stirling PDF 没有花里胡哨的UI,功能扎实,适合自建。如果想给团队用,配合反向代理和登录认证,基本可以替代在线PDF工具。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容