我构建了一个基于浏览器的 PDF 转换器,以停止将敏感文件上传到随机网站 #showdev #webdev #javascript #privacy
发布: (2026年5月9日 GMT+8 04:07)
3 分钟阅读
原文: Dev.to
Source: Dev.to
概览
在把感觉上第 100 份敏感合同上传到“免费”PDF 网站后,我意识到根本不知道这些文件会去向何方。为了保持文档私密,我构建了 BunnyConvert,这是一套 24 种 PDF 工具,全部在浏览器中使用 JavaScript 运行。
功能
- 签署 PDF – 手写体字体,拖拽定位签名(支持触摸 + 鼠标)
- 合并 / 拆分 / 压缩 / 旋转 PDF
- 转换 JPG/PNG/HEIC → PDF
- 导出 PDF → Word / Excel / PowerPoint / 图片
- 水印、保护、解锁 PDF
- 图片尺寸调整 与 CSV ↔ JSON 转换
- 原生 JS 前端(不使用 React/Vue)
技术细节
- 使用 pdf-lib 进行 PDF 操作
- 使用 pdf.js 在浏览器中渲染 PDF
- 使用 heic2any 进行 HEIC 解码
- 使用 Capacitor 作为 Android 包装器
- 使用 Supabase 进行可选择的分析(除非用户选择,否则不发送任何数据)
所有处理均在客户端完成;文件从不触及服务器。你可以在 DevTools 的 Network 面板中验证——没有任何外发文件请求。
关键挑战
pdf-lib的StandardFonts不支持土耳其字符,因此我嵌入了自定义 TTF。- 用原生 JS 实现类似 DocuSign 的签名定位,需要同时处理触摸和鼠标拖拽事件。
- 由于 “受限广告投放” 限制,AdMob 的生产审批对新发布者可能需要 2–4 周时间。
隐私
因为所有操作都在本地进行,你的文档始终保留在设备上。唯一的网络活动是可选的分析功能,且可以关闭。
价格
- 免费层 – 每日额度,适用于有限使用。
- 专业层 – $4.99 / 月,提供无限转换和移动端无广告体验。
链接
- 网页应用: