导读:PDF是数字世界的"最终格式"——合同用它、简历用它、证件扫描用它、电子书还是用它——于是"处理PDF"成了每个人的刚需:合并几份合同、拆出报告的某一章、压缩体积好发邮件、图片转PDF、PDF转Word、加个水印、去掉密码……这类需求一年要遇到几十次。而每次打开搜索引擎找"在线PDF工具",得到的是什么:满屏的广告、每日三次的免费额度、上传文件前必须登录、以及最要命的——你的合同、身份证扫描件、税单,明文上传到了来路不明的服务器("我们将在24小时后删除您的文件"——信不信由你)。Stirling-PDF是这个问题的一站式开源答案:一个自托管的PDF工具箱,50多个功能本地跑,文件根本不出你的机器。这篇讲透:在线工具的隐私陷阱、Stirling-PDF的功能版图、Docker部署与OCR中文语言包、常用功能实测(合并/压缩/转换/加密)、家庭场景的自动化工组流、资源账与无头浏览器、以及它的边界——哪些活它干得好,哪些还是得交给桌面软件。
一、在线PDF工具:隐私的重灾区
先把这个赛道的现状解剖清楚。搜索"PDF合并在线",排名靠前的工具几乎都是一个模子:网页做得清爽,功能按钮齐全,然后——免费用户每天3次、大文件需要开通会员、下载结果前先看30秒广告、扫码登录再给你文件。这些是体验层的糟粕,真正的黑洞在隐私层:你上传的文件去了哪?这类站点的用户协议里都有一句"处理后自动删除"——但你无法审计它:服务器日志有没有记录?CDN有没有缓存?站点本身有没有被黑?(这类工具站是钓鱼和恶意软件投递的高发地——黑客知道来的人都是带着敏感文件来的)。而你上传的往往是最敏感的那类文件:劳动合同、身份证正反面、银行流水、体检报告、签证材料——把这类东西交给"搜索结果第一名"的陌生服务器,是普通人在数字世界里最频繁的裸奔之一。本站一路把密码(Vaultwarden篇)、照片(Immich篇)、搜索记录(SearXNG篇)搬回了家——文档处理这块拼图,Stirling-PDF补上。顺带说一句它的"群众基础":这类需求量大到什么程度——Stirling-PDF在GitHub拿下了几万Star,正是无数人"受够了在线工具"的用脚投票。
二、功能版图:五十多个工具,一个页面
Stirling-PDF是一个Java写的Web应用(本地跑、浏览器用),首页就是把所有功能平铺出来的工具墙——按操作性质分了十几组,把高频的几组过一遍。转换组:PDF转图片(每页导出PNG/JPG)、图片转PDF(手机拍的照片合成一个PDF——证件扫描的标准姿势)、PDF转Word/HTML/Markdown(格式还原度尚可,复杂排版别指望)、Office转PDF(Word/Excel/PPT丢进去直接转——这个功能依赖LibreOffice内核,保真度九成,日常够用)。编辑组:合并(多个PDF按顺序拼一份)、拆分(按页码范围切、每页一页)、旋转、删除页面、页面重排(拖拽调整顺序)、添加水印(文字/图片水印,透明度可调——给外发文档盖"仅供参考")、OCR文字识别(扫描件变可搜索文本——后面单独讲中文语言包)。优化组:压缩(这个用得最多:几十MB的扫描件压到能进邮箱附件的体积,压缩率视内容从30%-80%不等)、灰度化、去色。安全组:加密码(设置打开密码和权限密码——发敏感文件前的最后一道锁)、去密码(自己有权处理的文件解锁)、数字签名(给PDF盖证书签名——办公场景的刚需)、对比(两个PDF的差异高亮)。杂项组:提取图片、提取文本、添加页码、调整大小、 flattening(表单字段压平)、元数据编辑……全列出来要五十多项,一个家庭或小团队的PDF需求,它能覆盖九成。界面上所有功能都是"上传→设置参数→执行→下载"的流程,浏览器里点完即走,没有账号、没有次数限制、没有广告——因为服务器是你自己的。
三、部署:Docker一把梭与OCR中文包
部署(Compose篇配方):
services:
stirling-pdf:
image: stirlingtools/stirling-pdf:latest
ports:
- "8080:8080"
volumes:
- ./stirling/trainingdata:/usr/share/tessdata
- ./stirling/extraConfigs:/configs
environment:
- DOCKER_ENABLE_SECURITY=false
- LANGS=zh_CN
restart: unless-stopped
三个配置点。其一,语言:`LANGS=zh_CN`让界面直接是中文(也顺便启用中文OCR支持)——开箱即是中文界面这点对家庭用户非常友好。其二,OCR语言包:tessdata目录挂出来后,容器会自动下载对应的语言训练数据(中文包几十MB,首次使用OCR时下载)——OCR对中文的识别效果:印刷体和清晰扫描件的准确率可用(九成以上),手机拍的歪斜低对比度照片会明显下降——重度扫描需求建议配个扫描APP的"文档矫正"一起用。其三,安全开关:`DOCKER_ENABLE_SECURITY`是内置的用户登录体系(企业版特性)——个人家庭用关闭即可(你的服务你自己用,登录层交给反代和内网);要开的话用带security后缀的镜像标签。对外发布的姿势看需求:纯内网用(最常见):不暴露公网,家里设备直接访问局域网IP——敏感文件的工组流根本不出门(配合WireGuard篇在外面也能用);要公网访问:Nginx反代+HTTPS(反代篇+Caddy篇)+域名,然后强烈建议在反代层加一道basic auth或IP白名单(1Panel篇讲过的思路)——一个能处理任意文件的开放服务,不该裸奔在公网(别人拿你的服务器算力白嫖压缩PDF事小,暴露面事大)。资源账:Java应用,内存占用500MB-1G(OCR和Office转换时往上冒),CPU在压缩/转换时跑满核——2G内存小鸡入门,4G舒适,重度使用(大批量OCR)需要更强的CPU。
四、高频功能实测:那几个每天在用的
挑最常用的几个讲讲实操细节和效果预期。压缩(用得最多):上传50MB的扫描合同,压缩等级选"中等",出来12MB——邮箱附件的救星;原理上它优化的是图像重采样和流结构,对纯文本PDF压缩率有限(本来就小)、对扫描件(图像为主)效果拔群;预期管理:压缩是有损的,选"推荐"档肉眼无差别,选到极限档文字开始发糊——合同类文档建议中等档。图片转PDF(证件场景):手机拍的身份证正反面两张JPG,功能里拖进去,选页面尺寸(A4或原图)、边距、自动排序——出来一个双页PDF,配合压缩(扫描照片原始文件很大)就是标准的"证件PDF"工作流——全程没离开自己的机器。合并与拆分(文档场景):几份报告合并成一份年度汇总、把一本500页的电子书拆出你要的第3章——页码范围语法支持"1-5,8,12-20"这种复合写法,效率工具的细节到位。加密码(外发场景):给要发微信/邮件的敏感PDF设个打开密码,密码走另一个渠道(短信/口头)告诉对方——发文件和给钥匙分两条路是基本素养。OCR(老文档场景):家里90年代的纸质资料扫描件(纯图像、不可搜索、不可复制)——OCR后变成可选中复制的文本层,还能全文搜索——给家里的老文件做数字化归档时,这功能是灵魂(配合Immich篇的照片数字化,你的"家庭档案数字化"工程就完整了)。转换(格式场景):PDF转Word的需求最常见,Stirling用的是LibreOffice内核,复杂排版(多栏、艺术字、表格嵌套)会有错位,简单文档还原度九成——重要文档转完自己校一眼,别直接交出去。
五、自动化与联动:浏览器之外的玩法
单次操作在网页里点点点已经够爽,进阶玩家可以把它接进自动化流水线——几个实测好用的姿势。姿势一,API直调:Stirling-PDF所有功能都有REST API——`POST /api/v1/merge`带文件参数就行——写个脚本:监控某目录(cron篇的定时轮询或inotify),出现新PDF就自动压缩后移到"待发送"目录——家人的"扫描→自动瘦身"流水线,长辈只会往文件夹里放文件,剩下的自动发生。姿势二,接进Memos(Memos篇)的附件流:手机上收到的PDF(发票、通知),用快捷指令推给Stirling压缩后再存档——iOS快捷指令+API这个组合在Memos篇讲过,同样的管道换个处理节点而已。姿势三,ntfy通知(ntfy篇):批量OCR任务跑完推一条"老照片档案数字化完成,共处理237个文件"——长任务的完成通知是自动化的礼貌。姿势四,和Jellyfin/Alist的文档场景互补:Alist(Alist篇)里的电子书PDF在线预览不爽?下载链接直接喂给Stirling转成更适合平板阅读的尺寸——工具箱之间的互相喂招才是自托管的乐趣。姿势五,家庭"打印中转站":配合CUPS打印服务(另一个轻量自托管),浏览器里"打印到PDF"直接进Stirling的流程(加页码/水印/压缩)再输出——所有打印件先过你的规矩。这些姿势共同的底层:Stirling是"无头可用"的(API完备),所以它不只是网页工具,还能当你自动化体系里的"文档处理节点"——网页是给人看的,API是给流程用的。
六、边界:它不是万能的
诚实清单,管理期望。它不擅长的:其一,重度格式编辑——改PDF里的文字内容、调排版这种"编辑"不是它的主业(PDF格式天生不适合编辑),真要改内容应该回到源文档(Word/LaTeX)改完重新导出——Stirling管"处理"(合并压缩转换),不管"创作";其二,扫描仪级OCR——它的OCR是Tesseract引擎,印刷体够用但复杂场景(手写、表格、多语言混排)准确率一般——重度文档数字化需求看看专业方案(或等等AI方案:把图像丢给本地Ollama篇的多模态模型,识别质量是另一个次元,但吞吐量小);其三,CAD/矢量工程图:工程PDF的转换和压缩有专门的格式细节,Stirling处理常规文档为主。桌面软件仍有优势的场景:Adobe Acrobat的专业编辑、PDF-XChange的标注批注、WPS的深度编辑——重度PDF工作者(每天编辑数小时的那种)该买桌面软件还是买——Stirling的定位是"家庭和轻团队的日常处理箱",覆盖90%的低频刚需,而不是替代专业工具的100%。服务化的风险提示:把它暴露公网给"朋友用"要想清楚——开放的文件处理服务会被扫描器盯上(白嫖算力)或被恶意上传(处理恶意文件)——公网暴露务必加认证层,或者干脆只走内网+WireGuard(WireGuard篇)——自托管的第一课:能不开的门就不开。
七、安全与隐私账:这次是真的"本地处理"
最后把这笔账算清楚——因为这个工具的核心卖点就是隐私。数据面:所有上传的文件在容器内存/临时目录里处理,默认配置下载后即清理(不留存、不记录内容)——对比在线工具的"我们承诺删除",这里的承诺是你可以自己看代码验证的(开源的意义就在这行);处理完的文件你想留就手动存到Alist或NAS,服务本身不替你保管——它是工具,不是存储。暴露面:纯内网部署时,数据面完全闭环(文件从你手机到你小鸡,不出家门);公网部署时加认证(第四、六节讲过),数据面依然是闭环的(文件在你和你的服务器之间,TLS加密)——无论哪种姿势,第三方都出局了。依赖面:诚实说明它的处理链——Office转PDF依赖内置的LibreOffice(开源、无外联),OCR依赖Tesseract(本地模型、无外联),压缩转换是纯本地计算——整个工具链没有任何一个环节把你的文件内容发往外部(对比某些"智能压缩"工具的云端优化——那就是把文件传出去再传回来)。这份"本地性"就是它存在的全部理由:合同、证件、税单、病历——这些文件的处理过程,从"赌第三方的人品"变成"自己的服务器自己看"——和Vaultwarden管密码、Immich管照片同一逻辑:敏感数据的处理权,是数据主权的最后一公里。
结语
从密码到照片,从搜索到念头,本站的自托管清单一路在把"敏感数据的处理权"收回家——这篇的Stirling-PDF补的是最日常的一块:文档。它可能是全清单里"上手门槛最低"的服务:部署十分钟、中文界面、全家用得懂——妈妈把手机拍的体检报告拖进去合成一个PDF,你把合同压到能进邮箱,孩子把作业扫描件去色打印——同一个页面,谁都用得来,而所有文件都没离开你家的网络。今晚就拉一个起来,然后把浏览器书签里那些"在线PDF工具"挨个删掉——删到最后一个的时候你会意识到:原来这几年,你一直在把最私密的文件交给最陌生的人。自托管的意义,有时候就藏在这么一个书签栏的清理动作里。




