摘要

PDF 合并、拆分、压缩、转图片,这些需求不高频,但每次要用时都让人头疼:在线工具要上传文件(隐私呢?)、本地软件要装要收费。自建 Stirling PDF,一次部署, permanent 解决:CT702 上 Docker 跑起来(内网 :8080),50 多个 PDF 操作全免费、无文件大小限制、文件不出内网。这篇记录部署过程、常用功能速查、和本地/在线工具的对比,以及"大镜像拉取"这个部署时的真实坑。

目录

一、为什么自建 PDF 工具箱

PDF 工具的需求曲线很典型:平时想不起来,一用就是急活——报销要合并发票、合同要拆分章节、扫描件太大要压缩。三个选项:

方案 优点 缺点
在线工具(iLovePDF 等) 打开即用 文件要上传到别人服务器,隐私裸奔;免费版限大小、限次数
本地软件(Adobe 等) 功能强 贵;重;手机上不方便
自建 Stirling PDF 免费、无限制、文件不出内网、手机浏览器也能用 要自己部署一次

对"偶尔用、但用时很急"的场景,自建是最优解。部署一次,之后每次用就是打开浏览器。隐私是决定性因素:合同、发票、证件扫描件,传到第三方服务器上转一圈,想想都不踏实。

二、部署:CT702 上的 Docker

Stirling PDF 跑在 CT702(docker-lab)上,和 Uptime Kuma、Dashy 共用 /root/lab-compose.yml(在容器内):

# /root/lab-compose.yml(stirling-pdf 片段,结构示意)
services:
  stirling-pdf:
    image: stirlingpdf/stirling-pdf:latest
    ports:
      - "8080:8080"
    volumes:
      - /opt/stirling-pdf/training:/usr/share/tessdata  # OCR 语言包(可选)

内网访问 http://192.168.0.127:8080,首页返回 200 即部署成功。数据是无状态的(处理完即走,不存文件),所以不需要操心数据卷备份,这是它和博客、密码库最大的不同。

部署时的真实坑是镜像拉取:Stirling PDF 镜像约 1.1G,家里直连 Docker Hub 极慢,ghcr.io 甚至 DNS 不可达。当时用 crane 在本机拉包、按 200M 分片经 VPS 中转、最后 docker load 导入,完整过程见《内网拉镜像太慢?crane 分片中转 + xray 代理双方案》。后来给 CT702 配了 xray 代理,一劳永逸。

三、功能清单:50 多个操作,常用速查

Stirling PDF 的功能多到一屏放不下,按场景分组,常用的其实就这几个:

场景 功能 说明
合并 Merge PDFs 多个 PDF 合成一个,可调顺序
拆分 Split PDF 按页码范围、按固定页数、按书签拆
压缩 Compress PDF 降画质压体积,发邮件前必备
转换 PDF 转图片 / 图片转 PDF 扫描件、报销单常用
页面 旋转、删除、提取页面 调整页面方向、删空白页
安全 加密码、去密码、加水印 基础加密,不是高强度
OCR 图片型 PDF 转可搜索 需要 OCR 语言包

不常用的还有一堆:PDF/A 转换、元数据编辑、签章、表单处理……知道"它有"就行,用到时再翻。Stirling PDF 的界面是按功能平铺的,搜索框直接搜关键词,比翻菜单快。

四、上手:三个最高频操作

合并:报销发票打包

  1. 打开 Merge PDFs,拖入多个 PDF;
  2. 拖拽调整顺序;
  3. 点合并,下载。完事。

拆分:合同按章节分

  1. 打开 Split PDF,上传文件;
  2. 选"按页码范围",填比如 1-5, 6-12;
  3. 下载拆好的多个文件。

压缩:扫描件太大发不出去

  1. 打开 Compress PDF,上传;
  2. 选压缩强度(一般选中等);
  3. 下载,看体积从几十 M 降到几 M。

三个操作都是"上传 - 点一下 - 下载"三步,没有学习成本。家里人也能用,这是自建工具箱的重要指标:不只自己用得爽,家人急用时也能自己搞定。

五、和本地工具、在线工具的对比

维度 Stirling PDF(自建) 在线工具 本地软件
隐私 文件不出内网 上传到第三方服务器 文件在本地
费用 免费 免费版限功能/大小 收费或找破解
文件大小限制 无(看服务器资源) 普遍有限制 无
多端 浏览器即用,手机也行 浏览器即用 要装客户端
部署成本 一次 Docker 部署 零 安装配置
断网可用 内网可达就行 不可用 可用

结论:日常 PDF 处理,Stirling PDF 全覆盖;超大文件、批量自动化,还是本地工具(pdftk、Ghostscript 命令行)更合适;出门在外借别人电脑,在线工具应急。三个各有位置,不互相替代。

六、纯内网:文件不出家门

按用户规则,Stirling PDF 纯内网:只有 http://192.168.0.127:8080,没有公网域名,nps 隧道和公网站点已删。这对 PDF 工具是天然合适的——处理的文件经常是合同、发票、证件,纯内网等于多了一层隐私保障。

在家用,打开浏览器就能处理;在外需要用,连 VPN(WireGuard)进来。Dashy 导航页录了它的内网入口,找起来方便。

七、踩坑记录

坑 1:镜像 1.1G,家里拉不动

Stirling PDF 镜像约 1.1G,是 CT702 上最大的镜像。当时用 crane 拉包 + 200M 分片 + VPS 中转 + docker load,人肉搬运。教训:大镜像部署前先看家里网络行不行,不行就提前准备中转方案,别等 docker pull 卡住了再想办法。

坑 2:OCR 需要额外语言包

OCR 功能默认只有英文语言包,中文 OCR 要挂载 tessdata 中文包。部署时如果没配,用到中文扫描件才发现,等于功能残废。按需挂载:/opt/stirling-pdf/training 映射到容器内 tessdata 目录,中文包丢进去。

坑 3:处理大文件时内存

CT702 只有 3G 内存,Stirling PDF 处理几百 M 的 PDF 时,JVM 堆可能吃紧。大文件处理前看一眼容器内存,必要时给 compose 加 mem_limit 保护,避免把整台容器的内存吃光影响其他应用。

OCR 实战:扫描件变可搜索

Stirling PDF 的 OCR 能把图片型 PDF(扫描件、拍照的文档)转成可搜索的文字层。注意两点:

  1. 中文要挂语言包:默认只有英文,中文 OCR 把 tessdata 中文包挂到 /opt/stirling-pdf/training(见部署节);
  2. OCR 是"加文字层",不是"转纯文本":原图保留,文字可选中、可搜索,排版不变。

流程:打开 OCR 功能 → 上传扫描件 → 选语言(中文)→ 下载。发票、合同扫描件走一遍 OCR,以后搜关键词直接定位,不用一页页翻。

命令行替代:批量处理

Stirling PDF 是"一次处理几个文件"的交互工具,批量(几百个文件)还是命令行靠谱:

需求 工具 例子
批量合并 pdftk pdftk *.pdf cat output merged.pdf
批量压缩 Ghostscript gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -o out.pdf in.pdf
批量转图片 pdftoppm pdftoppm -png doc.pdf page

分工:日常随手用 Stirling PDF,写脚本批量用命令行。两个都会,PDF 就没有难办的事。

纸质到数字:家庭文档数字化的流水线

Stirling PDF 是"纸质→数字"流水线里的一环。完整的家庭文档数字化是这样的:

第一步:扫描/拍照。 手机扫描 App(或扫描仪),纸质合同、发票、证件,变成图片或 PDF。这一步的关键是"命名规范":2026-10-01_电费发票.pdf,日期开头,内容其次。命名规范是数字化的地基,名字乱了,后面全乱。

第二步:OCR。 图片型 PDF 走 Stirling PDF 的 OCR,加中文文字层,变成可搜索的。这一步的价值:以后找"2025 年的物业费发票",搜关键词就行,不用一页页翻。

第三步:整理归档。 按"证件/财务/合同/其他"分文件夹,存在 NAS 上。NAS 的快照开着,误删能找回。这一步和 OpenList 的 /归档 卷衔接:归档好的文件,只读分享给家人。

第四步:原件处理。 数字化后,纸质原件别急着扔。发票、合同这类有法律效力的,先确认电子版清晰可读,再按"重要程度"决定原件去留。身份证、房产证这种,原件永久保留,电子版只是"方便查"。

流水线跑起来,家里的纸质文件越积越少,找东西从"翻箱倒柜"变成"搜关键词"。Stirling PDF 在其中的位置是"加工站":合并、拆分、压缩、OCR,纸质变数字的过程中,所有"动手脚"的活都在这干。工具的价值不在工具本身,在它嵌入的流水线。

无纸化办公的另一面:电子签名的坑

PDF 工具箱配齐了,无纸化还差最后一环:签名。Stirling PDF 有"签章"功能,但这里有个大坑要提前说:电子签名 ≠ 图片贴个章。

方式 效力 场景
图片签名(贴个手写签名图) 无法律效力,防君子不防小人 内部流程、示意
可靠电子签名(国标) 有法律效力 合同、法律文件

Stirling PDF 的签章,属于"图片签名"这一档:把签名图片贴到 PDF 上。它解决的是"流程"问题(对方要个签了名的 PDF),不是"法律"问题(打官司认不认)。分清这个边界:内部报销、快递单,图片签名够了;劳动合同、购房合同,老老实实走可靠电子签名平台(e 签宝、法大大)或纸质。

图片签名的正确姿势:签名图片用透明底 PNG,别用白底 JPG(贴上去一个白框,丑);签完 flatten(压平),别留可编辑的签名域(否则对方能把你的签名抠下来贴到别的合同上)。安全习惯:签名图片别乱发,它是你的"数字笔迹"。

无纸化的全景:扫描归档(Stirling PDF)→ 日常签署(图片签名)→ 重要合同(可靠电子签名平台)。三档分开,别用一档的工具干三档的事。

PDF 的元数据:别泄露隐私

PDF 里藏着元数据:作者、创建时间、修改软件,甚至编辑历史。合同、简历,发出去前,元数据最好清一清。Stirling PDF 有"元数据编辑/清理"功能,发外部前过一遍。

元数据泄露的经典案例:简历的"作者"是上家公司的电脑名,合同的"创建时间"暴露了谈判时间。不是什么大事,但"能清就清",举手之劳。隐私保护在细节里:文件名别带身份证号,元数据别留真名,对外发的 PDF,清一遍再发。Stirling PDF 的元数据清理,就是干这个的,5 秒钟的事。 工具箱的意义,是"要用时有"。Stirling PDF 在内网待命,就是这句话的落地。别等要用时才装,装好放着,就是它的工作。内网地址记在导航页,要用时点一下就行。PDF 处理不求人,不求外网,不求订阅。这就是自建的快乐:一个 docker 容器,解决一类问题。快乐很简单,容器跑起来就行。跑起来,放着,用的时候点一下。这就是内网工具该有的样子。 Stirling PDF 的 API 也值得一提:它有 REST API,可以脚本化调用。比如"每天凌晨把扫描目录的 PDF 自动 OCR",写个 cron + curl 就行。API 的玩法,把"工具"变成了"流水线的一环"。这篇讲的是手动用,API 是自动化的门。有兴趣的,可以看它的 API 文档,从"合并两个 PDF"开始试。工具的上限,往往在 API 里。手动用是起点,API 是天花板。天花板有多高,看你的脚本写多勤。脚本写起来,Stirling PDF 就从工具变成了流水线。

八、总结

Stirling PDF 是"部署一次、永久省心"的典型:Docker 一把梭,50 多个 PDF 操作全免费、无限制、文件不出内网。纯内网部署,隐私拉满。三个最高频操作(合并、拆分、压缩)都是三步完成,家里人也能用。和在线工具、本地软件不是替代关系,是互补:日常用它,批量自动化用命令行,大文件用本地。部署时的镜像拉取坑,xray 代理已经一劳永逸解决。

相关阅读:《内网拉镜像太慢?crane 分片中转 + xray 代理双方案》、《PVE 里跑 Docker:LXC 容器 CT702 实战》。