姜还是老的辣~
本期来快速介绍一款 PDF 工具BentoPDF,支持Docker一键部署。我们可以直接在浏览器中操作、编辑、合并和处理 PDF 文件。无需服务器端处理,确保文件安全私密。无论是个人、团队还是企业,这都是一个挺不错的工具。

早期我介绍过Stirling-PDF,其实这俩差不多。因为当时并没有建立博客站,文章基本只更新于什么值得买。Stirling-PDF的最新部署代码我会放在文末。


为什么选择 BentoPDF?
-
工具齐全,一站式页面:从合并、拆分、重排、提取/删除页面、旋转、N-Up、交替混页,到页码/水印/页眉页脚、裁剪、颜色反转、背景/文字颜色修改、表单填写与压平、注释移除/空白页移除,几乎覆盖日常 PDF 处理的全部高频动作。还支持图像→PDF、Markdown/文本→PDF,PDF→图像/灰度、OCR 可检索化、压缩、修复、加解密、权限变更、签名、涂黑(打码)、元数据编辑/移除、Linearize/Fast-Web-View 等进阶能力。
-
零上传&高性能:全部在浏览器端 WASM/JS 内完成,结合 PDF.js、PDFLib、PDFKit、qpdf-wasm 等库,处理大文件也很流畅。
-
免费开源&可自建:BentoPDF 是一款面向所有人的免费开源工具,便于内部私有化部署;仓库活跃、文档完整。一键隐藏站点导航/营销区块,仅保留工具区域,非常适合在内网里自用/分享使用。
-
容器安全:非 root 账户运行,遵循最小权限原则,默认更稳。
部署流程
本文以威联通NAS作为部署演示平台,不过由于不涉及文件目录映射,任意平台都可直接拿去用。
推荐纯净版本:
services:
bentopdf:
# Using Docker Hub
image: bentopdf/bentopdf-simple:latest
# 也可选择下面的镜像源
# image: ghcr.io/alam00000/bentopdf-simple:latest
container_name: bentopdf
restart: always
ports:
- '3638:8080'
完整部署代码,不太受用,有些乱七八糟的内容,如下:
services:
bentopdf:
image: bentopdf/bentopdf:latest
container_name: bentopdf
ports:
- '3638:8080' # 左侧端口自定义
restart: always
打开威联通的Container Station,创建新的应用程序。

使用一览
按上文代码为例,部署完毕后浏览器输入 NAS_IP:3638 即可访问。啥功能都有。不过遗憾的没有中文,可借用网页翻译使用。

完整版初始界面如下,可以看到光页首就一大坨,虽然有快速定位工具栏。但用着还是难受些。

Stirling-PDF
我个人还是更喜欢这个。也推荐用这个。
轻量部署代码如下:
services:
stirling-pdf:
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest-ultra-lite
# 另有latest,latest-fat可选
container_name: stirling-pdf
ports:
- "8080:8080"
environment:
- TZ=Asia/Shanghai
# ultra-lite 走极简,把附加功能关掉(更省资源)
- DISABLE_ADDITIONAL_FEATURES=true
# 即使 ultra-lite 通常不做 OCR,保留变量/映射也没问题
- TESSDATA_PREFIX=/usr/share/tessdata
volumes:
- /share/Container/StirlingPDF/trainingData:/usr/share/tessdata:ro # OCR 语言包(可留空)
- /share/Container/StirlingPDF/extraConfigs:/configs # 自定义 application.yml 等
- /share/Container/StirlingPDF/customFiles:/customFiles # Logo/CSS
- /share/Container/StirlingPDF/logs:/logs # 日志
- /share/Container/StirlingPDF/pipeline:/pipeline # 流水线/批处理文件
restart: always
还有很多可以自定义的配置,包括洁面装修、团队等等,就不做多介绍了,有哪些需求的朋友可以去看官方文档,写得很详细,自己往里面加~

最后
姜还是老的辣。
感谢观看,本文完。
评论区