
开源项目KrocPDF发布:本地优先的PDF处理工具,对标iLovePDF
来源标题:Show HN: KrocPDF – A Local-First, Alternative to iLovePDF
开源项目KrocPDF发布了本地优先的PDF处理工具,作为iLovePDF等商业在线转换器的隐私替代方案。该工具免费支持100MB文件上限,是行业标准的4倍,并提供无损150/300 DPI输出且无水印。本地模式下文件完全在浏览器内处理,云端模式则对Cloudflare R2存储执行24小时自动清除规则。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
直达链接: 为什么选我们 • 功能 • 对比 • 架构 • 前置要求 • 快速开始 • API 指南 • Cloudflare R2 • 测试 • 治理与法律 • 贡献
大多数商业在线转换工具(iLovePDF、Smallpdf、PDF Candy)用"免费"的说辞吸引用户,然后利用用户对文档的急切需求,通过敌视用户的机制大肆变现:
我们打造这个平台,就是要成为隐私优先的开源替代方案,彻底解决这些问题:
可选方案 那些掠夺性的老牌玩家 我们的开源架构
文件上限 15–25 MB 提交文档时被迫陷入付费订阅陷阱。 100 MB 免费文件上限 比行业标准上限高出 4 倍。
强制重压缩与品牌植入 降采样到 72 DPI,并加上不想要的水印。 无损 150/300 DPI 保真 像素级清晰度,零水印,可直接用于法律场景的输出。
不透明的服务器日志 敏感个人文件被上传并无限期保留。 双引擎隐私(WASM 优先) 本地模式 100% 在浏览器内运行;文件永远不会离开你的设备。
无限期保留 无法得知文件何时或是否被永久删除。 严格的 24 小时清除 + 即时删除 在 Cloudflare R2 上强制执行自动化生命周期删除规则。
激进的广告横幅与追踪器 杂乱、具有欺骗性的 UI,专为收割广告曝光而设计。 零广告 + 纯玻璃拟态 极简、专注、无干扰的开源工作空间。
功能 详情 优势
双引擎 客户端 WASM + Go 守护进程后端 机密文件获得完整隐私保护;重型任务获得高吞吐
100 MB 上限 比标准竞争对手大 4 倍 无需拆分即可转换高分辨率扫描件和多页书籍
零水印 文档上不添加任何品牌标识 完全专业的 PDF,可直接用于法律、企业或学术用途
无损 DPI 保留 150 与 300 DPI 分辨率 文字清晰、照片锐利;不强制产生压缩伪影
布局控制 边距(无、小、大)、方向(纵向、横向)、页面尺寸(A4、Letter、Legal) 生成文档前拥有完整的样式灵活性
可视化排序 拖放式预览网格 在拼接成单个 PDF 之前直观地排序页面
实时进度 Server-Sent Events(SSE)流式推送 在繁重的多图合成过程中提供准确的实时反馈
零出网成本 Cloudflare R2 S3 兼容存储 可持续的开源部署,零带宽开销
指标 / 能力 传统工具(iLovePDF、Smallpdf) 我们的平台
最大文件上传 15 MB – 25 MB 100 MB(免费)
水印 免费版强制添加 零(始终干净)
隐私保证 必须上传到服务器 可选客户端 WASM 引擎
数据保留 无限期 / 不透明保留 严格 24 小时清除 + 即时清除操作
界面 广告繁多且带有欺骗性重定向陷阱 干净的玻璃拟态 UI,零广告
Worker 架构 缓慢的单线程 Node 脚本 并行 Go Routines(pdfcpu + govips)
我们的平台通过异步、事件驱动的队列,将有状态的 API 编排与 CPU 密集型的图像处理解耦:
[ 用户浏览器 ] │ ├─── (隐私模式) ──> [ 客户端 WASM 引擎 ] ──> [ 即时 PDF 下载 ] │ └─── (批处理模式) ───> [ Next.js 前端 ] │ ├── (预签名 PUT) ──> [ Cloudflare R2 存储桶 ] │ └── (任务元数据) ───> [ NestJS API 网关 ] │ ├── (保存记录) ──> [ Neon PostgreSQL ] │ └── (任务入队) ──> [ Redis Streams ] │ ▼ [ Go Worker 守护进程 ] (govips + pdfcpu) │ ├── (流式输出) ──> Cloudflare R2 └── (SSE 进度) ──> Next.js UI
功能规格与深入解析 关于我们的双引擎架构如何处理特定格式的详细拆解,请查看我们的专项功能规格:
在本地运行项目之前,请确保已安装以下内容:
一条命令完成生产环境同构的本地引导
git clone https://github.com/KrocPDF/KrocPDF.git cd KrocPDF && docker compose up -d [OK] Container jpg2pdf-postgres Running (Port 5432) [OK] Container jpg2pdf-redis Running (Port 6379) [OK] Container jpg2pdf-minio Running (S3 API :9000 | Web Console :9001) [OK] Active Engine Routing Client WASM: Online | Cloud Worker: Listening
⚡ 5 分钟开发者快速开始 🚀 只做前端或 WASM? 你不需要 Docker、PostgreSQL 或 Go!直接跳到 docs/getting-started.md 查看我们的零阻力 5 分钟搭建路径(cd frontend && npm install && npm run dev)。
以下面向需要处理完整 monorepo 全栈的开发者:
git clone https://github.com/KrocPDF/KrocPDF.git cd KrocPDF cp .env.example .env
- 启动本地基础设施 启动本地 PostgreSQL、Redis 和 MinIO 存储(已预配置 CORS 并自动创建存储桶):
docker compose up -d
- 初始化并运行后端 API
cd backend-api npm install npx prisma generate npx prisma db push npm run start:dev
API 将运行在:http://localhost:3000
cd ../worker-service go run cmd/worker/main.go
Worker 连接 Redis Streams 并监听转换任务。
cd ../frontend npm install npm run dev
Web 客户端将在以下地址可用:http://localhost:3000。
-
Web 界面 在浏览器中打开 http://localhost:3001 或在线演示。 选择你的模式: 隐私模式(WASM):最适合敏感证件、机密文档,50MB 以下。文件永远不会离开你的浏览器。 云端批处理模式:最适合大批量集合、最高 100MB 的批量操作。 将你的 JPG/PNG 文件拖放到上传区域。 通过拖动卡片动态重新排序图片。 自定义页面尺寸(A4、US Letter、Legal)、方向(纵向、横向)和边距(无、小、大)。 点击"转换为 PDF",下载你干净、无水印的文档!
-
REST API(面向开发者) 通过我们的 HTTP 端点创建自动化转换任务:
curl -X POST http://localhost:3000/api/convert
-H "Content-Type: application/json"
-d '{
"pageSize": "A4
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。