1、立项背景和目标:
在日常办公、学习与证照申报中,用户经常需要将零散照片、收据发票、证件扫描件或设计图合并为规范易读的PDF文档。传统在线转换工具普遍存在收费高昂、隐私泄露风险、版式排版呆板以及移动端体验欠佳等痛点。本项目旨在打造一款跨平台(Web端与移动端双端协同)、高安全、轻量优雅的图片转PDF及文档管理SaaS产品(PDFMyPic),为个人与团队提供兼具高颜值与高可靠性的文档处理服务。
2、核心功能模块介绍:
- 智能图片导入与格式转换:支持JPG、PNG、WEBP、HEIC、GIF等主流格式,内置HEIC自动解码与前端快速图片压缩;
- 灵活可视化排版:支持图片拖拽重排、顺逆时针旋转、自定义页边距及单页自适应缩放;
- 文档自定义增强:支持自定义多样式页码(如“第X页/共Y页”)、图片文件名/自定义注释标注(支持顶部/底部定位)及文字水印;
- 安全防护与权限控制:支持PDF标准AES密码保护,端到端RSA公钥加密传输,临时文件定时清理;
- 个人中心与历史记录:提供转换记录追踪、文档快速再编辑与下载管理,结合Stripe支持免费版与Pro会员订阅体系。
3、业务流程与功能路径:
用户上传多张图片 -> 客户端自动压缩/转码预处理与预览 -> 可视化拖拽重排与版式定制(页码、边距、注释、水印、密码) -> 提交后端边缘函数流式合并处理 -> 实时生成PDF并存储于对象存储 -> 用户一键预览下载或保存至历史归档。
1、整体架构和设计思路:
项目采用现代全栈多端架构:
- 前端Web端:Nuxt 4 + Vue 3 + Tailwind CSS v4,提供现代化毛玻璃质感UI、响应式交互及SEO优化;
- 移动端:UniApp(Vue 3 + Vite),实现一套代码同时编译适配iOS、Android及H5端;
- 后端API:基于轻量高性能 Hono 框架,部署于 Cloudflare Workers 边缘计算平台,搭配 Cloudflare R2 对象存储与PostgreSQL 数据库,采用 Prisma ORM 进行代码优先(Code-First)数据建模;
- 安全与支付:支付订阅与 Webhook 闭环处理,JWT 双Token无感刷新鉴权,RSA非对称加密敏感信息。
2、“我”的负责模块与结果:
独立负责从系统架构设计、全栈研发到自动化部署的完整交付过程:
- 核心转换引擎研发:基于 pdf-lib 与 WebAssembly(Photon / QPDF-Wasm)实现边缘端高性能PDF合成与加密管道,Pro会员支持单次批量合成多达100张高清图片;
- 跨端体验建设:完成Web端与移动端双端交互实现,实现秒级即时前端图片预览与流式生成,将单次PDF处理耗时降低约60%;
- 商业化闭环:设计并跑通支付会员订阅、Webhook生命周期处理及权益拦截器,实现0服务器运维成本的Serverless无服务器弹性架构。
3、“我”遇到的难点、坑和解决方案:
- 难点1(Edge环境WASM动态编译限制):Cloudflare Workers边缘运行环境禁止运行时动态编译WASM。QPDF-WASM依赖动态fetch与编译导致部署失败。解决方案:在Worker中直接将WASM编译为模块注入,通过全局劫持 globalThis.fetch 和 WebAssembly.instantiate,定向拦截WASM请求并返回预编译实例,成功在边缘端跑通工业级PDF加密。
- 难点2(中文字体嵌入与CFF子集化乱码Bug):使用 pdf-lib 嵌入中文字体时,底层 @pdf-lib/fontkit 存在多FDSelect字体子集化索引错位的上游已知Bug,导致中文乱码或崩溃。解决方案:深入字体解析源码定位缺陷,通过 pnpm patch 对 fontkit 打补丁修复 used_fds_index 与 offSize 偏移逻辑,彻底解决多语言中文字符子集嵌入问题。
- 难点3(端到端密码传输安全):为避免用户设置的PDF加密密码明文暴露在网络传输中,前端采用 node-forge 实现 RSA 公钥加密,后端在PDF执行加密操作前使