PDFCraft:完全在浏览器本地运行的隐私优先 PDF 工具箱(90+ 工具)
PDFCraft 是一套基于 Next.js 15 + WebAssembly 构建的浏览器端 PDF 工具集,文件不上传服务器、全部在本地处理,提供合并、拆分、压缩、转换、编辑、加密等 90+ 项工具,并附带可视化工作流编辑器(Beta)。采用 AGPL-3.0 许可证,支持静态导出部署到 Vercel、Netlify、GitHub Pages、Cloudflare Pages 或自托管 Docker + Nginx。
社区作者 · zZz
它解决什么问题
PDFCraft 是一个面向隐私与性能设计的综合 PDF 工具套件。与多数在线转换器不同,它使用 WebAssembly 技术在你的浏览器内完成全部处理,文档不会离开你的设备,因此适合处理敏感资料。项目使用现代 Web 技术构建,提供接近原生应用的流畅体验。
【核心特性】
- 100% 隐私:所有处理均在客户端完成,不向外部服务器上传文件。
- 快速响应:由 Next.js 与 WebAssembly 驱动,性能接近原生。
- 工具齐全:页面标题与工具清单标注 90+ 工具,About 段落中写为 80+(以来源文本为准)。
- 现代 UI:基于 Tailwind CSS 的简洁、可访问、响应式设计。
- 多语言:支持英语、西班牙语、法语、德语、葡萄牙语、日语、韩语和中文。
【工作流编辑器(Beta)】 来源明确标注该功能处于早期开发阶段,可能存在缺陷或功能不完整。它提供可视化画布,可将多个 PDF 操作串联成自动化处理流水线。
预置模板按类别分为:Common(Merge & Compress、Document Preparation、Split & Watermark、Batch Watermark、Report Assembly、Invoice Processing)、Conversion(Images to PDF、PDF to Images、Office to PDF、eBook to PDF、Photo Album Creator)、Optimization(Optimize for Web、Full Optimization、Grayscale & Compress、Archive Preparation)、Security(Create Secure PDF、Confidential Document、Unlock & Edit)。
访问方式:导航到 /workflow,或在导航菜单中点击 “Workflow Editor”。 配图 2 为工作流编辑器界面截图(Visual workflow editor with drag-and-drop interface)。配图 1 为 PDFCraft Logo。
- 可视化节点式编辑器:拖放工具到画布并连线构建处理流水线。
- 23+ 预置模板:如“Merge & Compress”“Secure PDF”“Document Preparation”等。
- 保存与复用:可保存自定义工作流以便日后使用。
- 实时校验:自动检查相连工具之间的格式兼容性。
- 批量处理:同一工作流可处理多个文件。
- 可折叠面板:折叠工具与库侧边栏以扩大画布空间。
【工具清单概览(来源分为六组)】
- 组织与管理(27 项):PDF Multi Tool、Merge PDF、Split PDF、Extract Pages、Organize PDF、Delete Pages、Rotate PDF、Rotate by Custom Degrees、Reverse Pages、Add Blank Page、Divide Pages、N-up PDF、Combine to Single Page、Alternate Merge、OCR PDF、Add Attachments、Extract Attachments、Edit Attachments、View/Edit Metadata、PDF to ZIP、Compare PDFs、Posterize PDF、Grid Combine、PDF Booklet、PDF Reader 等。
- 编辑与批注(19 项):Edit PDF、Sign PDF、Crop PDF、Edit Bookmarks、Table of Contents、Page Numbers、Add Watermark、Header & Footer、Invert Colors、Background Color、Change Text Color、Add Stamps、Remove Annotations、Form Filler、Form Creator、Remove Blank Pages、Deskew PDF、OCG Manager 等。
- 转换为 PDF(22 项):Image/JPG/PNG/WebP/SVG/BMP/HEIC/TIFF/TXT/JSON/PSD/Word/Excel/PowerPoint/XPS/RTF/EPUB/MOBI/Markdown/Email/CBZ/DjVu to PDF。
- 从 PDF 转换(13 项):PDF to JPG/PNG/WebP/BMP/TIFF、PDF to Greyscale、PDF to JSON/DOCX/PowerPoint/Excel、Extract Images、PDF to PDF/A、Extract Tables。
- 优化与修复(8 项):Compress PDF、Fix Page Size、Page Dimensions、Linearize PDF、Repair PDF、Remove Restrictions、Rasterize PDF、Font to Outline。
- 安全 PDF(6 项):Encrypt PDF、Decrypt PDF、Sanitize PDF、Flatten PDF、Remove Metadata、Change Permissions。
【技术栈】
- 框架:Next.js 15(App Router);语言:TypeScript;样式:Tailwind CSS 4。
- PDF 处理:PDF.js、pdf-lib、PyMuPDF(WASM)。
- 状态管理:Zustand。
【部署形态】 项目配置为静态导出(output: 'export'),可部署到任何支持静态网站托管的服务,无需 Node.js 服务器。仓库内置 vercel.json、netlify.toml、.github/workflows/deploy.yml、public/_headers、docker-compose.yml + nginx.conf、.htaccess 等部署文件;安全与缓存响应头已预配置,静态导出使用 images: { unoptimized: true },所有部署配置均包含 WebAssembly 所需的 MIME 类型。
【来源与致谢】 项目在致谢中说明其受 BentoPDF 在隐私优先、客户端 PDF 工具方面开创性工作的启发,核心逻辑以其为重要参考;PDFCraft 针对 Next.js 生态重新实现,并扩展了工作流编辑器等独特功能。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
以下步骤均来自项目 README,按原文顺序整理。
【一、本地运行准备环境】
- Node.js 18.17 或更高版本
npm、yarn 或
pnpm(三选一)
【二、本地开发安装步骤】
- 克隆仓库:
git clone https://github.com/PDFCraftTool/pdfcraft.gitcd pdfcraft- 安装依赖:
npm install或
yarn install或
pnpm install- 启动开发服务器:
npm run dev或
yarn dev或
pnpm dev- 打开浏览器访问 http://localhost:3000 查看应用。
【三、Docker 部署】 项目同时提供预构建镜像与 Docker Compose 两种方式。 方式 1:使用预构建镜像(推荐)
docker pull ghcr.io/pdfcrafttool/pdfcraft:latestdocker run -d -p 8080:80 --name pdfcraft ghcr.io/pdfcrafttool/pdfcraft:latest随后打开 http://localhost:8080 访问。可用镜像标签:latest(main 分支最新稳定版)、v1.0.0(按语义化版本号的具体版本)、sha-abc1234(具体提交)。 方式 2:使用 Docker Compose 从源码构建(需先克隆仓库)
git clone https://github.com/PDFCraftTool/pdfcraft.gitcd pdfcraft开发模式(带热重载)
docker compose --profile dev up生产模式(静态构建 + Nginx)
docker compose --profile prod up --build开发模式地址:http://localhost:3000;生产模式地址:http://localhost:8080。停止容器:
docker compose down。
【四、子路径部署(basePath 支持)】 如需部署在子路径下(例如 https://your-domain.com/pdfcraft/),必须在构建阶段指定 base path。
- 使用 Docker 构建:
docker build --build-arg BASE_PATH=/pdfcraft -t pdfcraft .services: pdfcraft: build: context: . args:
- 使用 Docker Compose:
BASE_PATH=/pdfcraftenvironment:
BASE_PATH=/pdfcraft注意:由于应用为静态导出,BASE_PATH 必须在构建阶段提供。
【五、可用脚本】
npm run dev:启动带 Turbopack 的开发服务器,会自动执行 predev 解压 LibreOffice WASM 文件。
npm run build:构建生产版本,会自动执行 postbuild 解压 out/ 目录中的 WASM 文件。
npm run start:启动生产服务器。
npm run lint:使用 ESLint 检查代码。
npm run test:使用 Vitest 运行测试。
【六、生产部署】
步骤 1 · 构建项目:
npm run build(所有静态文件生成在 out 目录)。
- 部署到目标平台:
- Vercel(推荐):vercel --prod
- Netlify:netlify deploy --prod --dir=out
- GitHub Pages:推送到 main 分支(使用 GitHub Actions)
- Cloudflare Pages:wrangler pages deploy out
Docker + Nginx:docker compose --profile prod up --build- 部署后验证以下功能是否正常:多语言路由(如 /en、/zh)、工具页面加载、WebAssembly(PDF 处理)功能。
【七、常见问题与注意事项(来自 README)】
- 首次运行 dev 或 build 时若缺少 WASM 文件,脚本会自动解压 LibreOffice WASM;如异常需检查 predev/postbuild 是否执行成功。
- 子路径部署若未在构建阶段设置 BASE_PATH,页面资源会 404。
- 若 PDF 处理功能不可用,优先检查部署环境是否正确提供 WebAssembly MIME 类型。
- 工作流编辑器处于 Beta 早期开发阶段,可能遇到缺陷或功能不完整。
【八、参与贡献】 Fork 项目 → 创建特性分支(git checkout -b feature/AmazingFeature)→ 提交改动(git commit -m 'Add some AmazingFeature')→ 推送分支(git push origin feature/AmazingFeature)→ 发起 Pull Request。