在日常工作中,我经常需要处理PDF文档——合并报价单、给设计稿加水印、压缩大文件以便发送。市面上的PDF 工具不少,但用起来总有顾虑:有些要求上传文件到服务器,有些限制处理次数或文件大小,更让人担心的是,包含敏感信息的文档一旦上传到第三方平台,很难确保数据不被留存或滥用。
今天介绍的BentoPDF,是一款刚刚开源就迅速走红的本地化PDF工具集。

项目介绍
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排版 | 将多页内容排列到单页上(如2×2布局) |
| 交替合并 | 按页面顺序交替合并两个PDF |
| 海报化 | 将单页拆分为多页以便打印 |
内容编辑与修改
| 功能 | 说明 |
|---|---|
| PDF编辑器 | 综合编辑界面,支持文本、图形等操作 |
| 添加页码 | 自定义页码样式和位置 |
| 添加水印 | 支持文字或图片水印 |
| 页眉页脚 | 添加可自定义的页眉和页脚 |
| 裁剪PDF | 裁剪页面至指定区域 |
| 反色处理 | 反转页面颜色以提高可读性 |
| 修改背景色 | 更改页面背景颜色 |
| 修改文字颜色 | 更改文本内容颜色 |
| 填写表单 | 直接在浏览器中填写PDF表单 |
| 扁平化 | 将表单字段和注释转为静态内容 |
| 删除注释 | 移除批注、高亮等标记 |
| 删除空白页 | 自动检测并删除空白页 |
格式转换
- 图片转PDF(支持JPG、PNG、WebP、SVG、BMP、HEIC、TIFF)
- Markdown转PDF
- 文本转PDF
- PDF转图片(支持JPG、PNG、WebP、BMP、TIFF)
- PDF转灰度图
- OCR识别(将扫描件转为可搜索文本)
安全与优化
| 功能 | 说明 |
|---|---|
| 压缩PDF | 减小文件体积 |
| 修复PDF | 尝试修复损坏的PDF文件 |
| 加密PDF | 添加密码保护 |
| 解密PDF | 移除密码保护(需提供密码) |
| 权限管理 | 设置打印、复制、编辑等权限 |
| 数字签名 | 添加电子签名 |
| 内容涂黑 | 永久删除敏感内容 |
| 元数据编辑 | 查看和修改作者、标题等元数据 |
| 移除元数据 | 清除所有元数据 |
| 线性化 | 优化PDF以便快速网页浏览 |
| 净化PDF | 移除潜在的恶意内容 |
部署方案
BentoPDF支持多种部署方式,适合不同使用场景。
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:
image: bentopdf/bentopdf:latest
container_name: bentopdf
ports:
- '3000:8080'
restart: unless-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;
}
}同类项目对比
市面上还有一些类似的PDF工具,我简单对比一下:
| 项目 | 运行方式 | 开源 | 部署 | 功能范围 |
|---|---|---|---|---|
| BentoPDF | 纯浏览器端 | 是(AGPLv3) | 静态资源/Docker | 40+工具 |
| Stirling-PDF | 需要后端服务 | 是(Apache 2.0) | Docker/Java | 80+工具,更全面 |
| PDF.js | 纯浏览器端 | 是(Apache 2.0) | 库形式集成 | 仅查看和渲染 |
| iLovePDF | 云端处理 | 否 | SaaS服务 | 功能丰富,但收费 |
| Smallpdf | 云端处理 | 否 | SaaS服务 | 功能丰富,但有限制 |
原创文章,作者:howkunet,如若转载,请注明出处:https://www.intoep.com/othen/68289.html
微信赞赏
支付宝赞赏 