最近我关注到一个开源项目BentoPDF,它的核心特点是所有操作都在浏览器本地完成,文件不离开设备。

经过一段时间的试用,我发现它在隐私保护、功能完整度和部署灵活性上都有不错的表现,值得分享给有类似需求的朋友。
项目介绍
BentoPDF是一个完全运行在浏览器端的PDF处理工具集。与常规在线PDF服务不同,它不依赖后端服务器,所有文件处理逻辑都通过客户端JavaScript执行。这意味着用户选择的PDF文件仅在本地设备中被读取和处理,不会产生网络传输。

项目采用Vite + TypeScript + Tailwind CSS构建前端,界面简洁流畅。底层依赖多个成熟的开源库实现PDF操作能力:
-
PDF.js:Mozilla开源的PDF渲染引擎,负责文档预览
-
PDFLib.js:客户端PDF生成与编辑库
-
PDFKit:用于创建结构化PDF内容
-
Cropper.js:实现图像裁剪等交互功能
项目遵循GNU AGPLv3开源协议,代码托管在GitHub,支持自由使用、修改和分发。
项目地址:https://github.com/alam00000/bentopdf
在线体验:https://bentopdf.com
核心功能
BentoPDF提供了40+个PDF处理工具,覆盖日常工作中的主要需求。

我按功能类别整理如下:
文档组织与管理
| 功能 | 说明 |
|---|---|
| 合并PDF | 将多个PDF文件合并为一个文档 |
| 拆分PDF | 提取指定页面或按规则拆分文档 |
| 页面重组 | 通过拖拽方式重新排序、复制或删除页面 |
| 提取页面 | 保存指定页面范围为新PDF |
| 旋转PDF | 旋转单个或所有页面 |
| N-Up排版 | 将多页内容排列到单页上(如2x2布局) |
| 交替合并 | 按页面顺序交替合并两个PDF |
| 海报化 | 将单页拆分为多页以便打印 |
内容编辑与修改
| 功能 | 说明 |
|---|---|
| PDF编辑器 | 综合编辑界面,支持文本、图形等操作 |
| 添加页码 | 自定义页码样式和位置 |
| 添加水印 | 支持文字或图片水印 |
| 页眉页脚 | 添加可自定义的页眉和页脚 |
| 裁剪PDF | 裁剪页面至指定区域 |
| 反色处理 | 反转页面颜色以提高可读性 |
| 修改背景色 | 更改页面背景颜色 |
| 修改文字颜色 | 更改文本内容颜色 |
| 填写表单 | 直接在浏览器中填写PDF表单 |
| 扁平化 | 将表单字段和注释转为静态内容 |
| 删除注释 | 移除批注、高亮等标记 |
| 删除空白页 | 自动检测并删除空白页 |
格式转换
转为PDF:
-
图片转PDF(支持JPG、PNG、WebP、SVG、BMP、HEIC、TIFF)
-
Markdown转PDF
-
文本转PDF
PDF导出:
-
PDF转图片(支持JPG、PNG、WebP、BMP、TIFF)
-
PDF转灰度图
-
OCR识别(将扫描件转为可搜索文本)
安全与优化
| 功能 | 说明 |
|---|---|
| 压缩PDF | 减小文件体积 |
| 修复PDF | 尝试修复损坏的PDF文件 |
| 加密PDF | 添加密码保护 |
| 解密PDF | 移除密码保护(需提供密码) |
| 权限管理 | 设置打印、复制、编辑等权限 |
| 数字签名 | 添加电子签名 |
| 内容涂黑 | 永久删除敏感内容 |
| 元数据编辑 | 查看和修改作者、标题等元数据 |
| 移除元数据 | 清除所有元数据 |
| 线性化 | 优化PDF以便快速网页浏览 |
| 净化PDF | 移除潜在的恶意内容 |
技术特征
客户端架构
BentoPDF的核心设计理念是零后端依赖。所有PDF操作都通过浏览器端的JavaScript库完成,不需要服务器参与。这种架构带来几个明显优势:
-
隐私保护:文件只在本地设备中被读取,不产生网络传输
-
响应速度:无需等待上传/下载,处理速度取决于设备性能
-
离线可用:首次加载资源后,大部分功能可离线使用
-
部署简单:前端构建产物是纯静态资源,可托管在任意静态服务器
使用门槛
-
无需注册:打开网页即可使用
-
无文件限制:不限制处理次数、文件大小或批量操作
-
无付费墙:所有功能完全免费开放
-
无水印:处理后的文件不添加任何标记
安全设计
Docker镜像采用nginx-unprivileged以非root用户身份运行,使用高端口号(8080)以避免需要特权访问。这符合最小权限原则,降低容器逃逸等安全风险。
部署方案
BentoPDF支持多种部署方式,适合不同使用场景。
在线使用
直接访问 https://bentopdf.com 即可使用完整功能。
Docker快速部署
最简单的本地部署方式:
# 从Docker Hub拉取
docker run -p 3000:8080 bentopdf/bentopdf:latest
# 或从GitHub Container Registry拉取
docker run -p 3000:8080 ghcr.io/alam00000/bentopdf:latest
访问 http://localhost:3000 即可使用。
Docker Compose部署(推荐)
适合需要长期运行的场景,支持自动重启:
# docker-compose.yml
services
bentopdf
imagebentopdf/bentopdflatest
container_namebentopdf
ports
'3000:8080'
restartunless-stopped
启动命令:
docker-compose up -d
开发环境部署
如需修改代码或参与开发:
# 克隆仓库
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf
# 安装依赖
npm install
# 启动开发服务器
npm run dev
开发服务器运行在 http://localhost:5173。
版本管理
项目支持语义化版本控制,可通过标签选择特定版本:
# 最新版本
docker pull bentopdf/bentopdf:latest
# 指定版本
docker pull bentopdf/bentopdf:1.0.0
docker pull bentopdf/bentopdf:v1.0.0
发布新版本:
npm run release # 补丁版本 (0.0.1 → 0.0.2)
npm run release:minor # 次版本 (0.0.1 → 0.1.0)
npm run release:major # 主版本 (0.0.1 → 1.0.0)
配置选项
Simple Mode(简洁模式)
针对企业内部使用或教育机构,BentoPDF提供简洁模式,可隐藏品牌元素和营销内容:
-
隐藏导航栏、Hero区域、功能介绍、FAQ、用户评价和页脚
-
仅显示核心PDF工具
-
页面标题更改为"PDF Tools"
详细配置方法见项目文档中的SIMPLE_MODE.md。
静态资源托管
由于前端构建产物是纯静态文件,可使用Nginx、Apache或CDN进行托管:
# Nginx配置示例
server {
listen 80;
server_name pdf.example.com;
root /var/www/bentopdf;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
应用场景
根据我的使用经验,BentoPDF适合以下场景:
个人用户
-
学生:合并课件、提取重点章节、转换笔记为PDF
-
设计师:导出作品集、添加页码和水印
-
自由职业者:处理合同、发票等商务文档
团队协作
-
行政人员:批量处理报销单、合同、申请表
-
开发者:将Markdown文档转为技术手册
-
内容创作者:格式化输出PDF版本的文章或电子书
企业内网
对于有数据合规要求的组织,可以在内网部署私有实例:
-
敏感文档不离开企业网络
-
可集成到现有办公系统
-
支持定制化配置和品牌化
教育机构
简洁模式特别适合学校或培训机构:
-
为师生提供无干扰的工具环境
-
无需担心学生信息泄露
-
零维护成本
同类项目对比
市面上还有一些类似的PDF工具,我简单对比一下:
| 项目 | 运行方式 | 开源 | 部署 | 功能范围 |
|---|---|---|---|---|
| BentoPDF | 纯浏览器端 | 是(AGPLv3) | 静态资源/Docker | 40+工具 |
| Stirling-PDF | 需要后端服务 | 是(Apache 2.0) | Docker/Java | 80+工具,更全面 |
| PDF.js | 纯浏览器端 | 是(Apache 2.0) | 库形式集成 | 仅查看和渲染 |
| iLovePDF | 云端处理 | 否 | SaaS服务 | 功能丰富,但收费 |
| Smallpdf | 云端处理 | 否 | SaaS服务 | 功能丰富,但有限制 |
差异化分析:
Stirling-PDF功能更全面(支持OCR、签名验证等高级特性),但需要部署完整的后端服务(Spring Boot + Docker),资源占用更高。
BentoPDF的优势在于部署简单(仅需静态服务器)和隐私保护(文件不上传),适合对数据安全有严格要求但功能需求相对基础的场景。
如果你需要更高级的PDF处理能力且有服务器资源,可以考虑Stirling-PDF;如果优先考虑隐私和部署便捷性,BentoPDF是更合适的选择。
使用体验
我用BentoPDF处理了几个实际任务:
合并10份合同文件:拖入文件后调整顺序,点击合并,整个过程不到5秒,文件直接下载到本地。
给设计稿批量加水印:支持自定义文字水印的位置、透明度和旋转角度,批量处理20个文件用时不到1分钟。
压缩大文件:将一份15MB的扫描PDF压缩到3MB,画质损失不明显,方便通过邮件发送。
OCR识别扫描件:测试了一份中文扫描合同,识别准确率基本满足需求,可以搜索和复制文本。
整体来看,界面简洁直观,操作逻辑清晰。由于在本地处理,响应速度明显快于云端工具。唯一的限制是处理大文件(如100MB+的PDF)时,浏览器可能会占用较多内存,但这是客户端方案的共性问题。
总结
作为一名经常接触各类效率工具的产品经理,我认为BentoPDF在以下几个维度表现突出:
隐私保护:零上传的架构设计是其最大卖点,特别适合处理包含敏感信息的文档。
功能完整性:40+工具覆盖了日常工作中90%的PDF处理需求,基本可以替代付费工具。
部署灵活性:既可以在线使用,也可以通过Docker快速部署到本地或内网,适应不同场景。
开源透明:代码开源且遵循AGPLv3协议,用户可以审计代码、自行修改或贡献功能。
适用人群:
-
对数据隐私有较高要求的个人用户
-
需要内网部署PDF工具的企业团队
-
希望自建工具而非依赖SaaS服务的开发者
局限性:
-
不适合处理超大文件(受浏览器内存限制)
-
部分高级功能(如签名验证、批量OCR)不如专业后端方案
-
界面和交互相对简洁,缺少一些高级用户可能需要的细粒度控制