# ERPTurbo Poster 基于 Puppeteer 的海报生成服务,支持多种云存储后端。 ## 目录结构 ``` . ├── lib │ ├── browser.js # 浏览器管理模块 │ ├── storage.js # 存储服务模块 │ ├── params.js # 参数处理模块 │ ├── utils.js # 工具类模块 │ ├── routes.js # 路由处理模块 │ └── constants.js # 常量定义模块 ├── .env # 环境变量配置文件 ├── server.mjs # 主应用入口 └── package.json # 项目依赖配置 ``` ## 环境变量配置 项目使用 `.env` 文件配置环境变量,请根据需要修改 `.env` 文件中的配置项: ```env # 存储配置 STORAGE_TYPE=local # 可选值: cos(腾讯云), oss(阿里云), local(本地存储) # COS 配置 (腾讯云对象存储) COS_SECRET_ID=AKIDCGvLmwUmQr3RxKACF1XKrGb1FFA1I2D8 COS_SECRET_KEY=1TYMagMxIxRFMNQEYcQxEhvyuiEY4mIa COS_BUCKET=qimai-1251581441 COS_REGION=ap-shanghai COS_DOMAIN=https://qimai-1251581441.cos.ap-shanghai.myqcloud.com/ # OSS 配置 (阿里云对象存储) OSS_REGION=oss-cn-hangzhou OSS_ACCESS_KEY_ID= OSS_ACCESS_KEY_SECRET= OSS_BUCKET= # 本地存储配置 LOCAL_DOMAIN=http://localhost:3000 # 上传路径配置 UPLOAD_PATH=uploads/posters ``` ## 安装依赖 ```bash npm install ``` ## 启动服务 ```bash npm run dev ``` ## 接口说明 ### 1. 健康检查接口 - URL: `/status` - Method: GET - Description: 检查服务运行状态 ### 2. 海报生成接口 - URL: `/api/v1/poster` - Method: POST - Description: 生成海报并上传到云存储 - Request Body: ```json { "webpage": "需要截图的网页URL", "device": "设备缩放因子", "width": "截图宽度", "height": "截图高度", "type": "图片类型(png/jpeg)", "encoding": "编码方式(binary/base64)" } ``` ### 3. PDF下载接口 - URL: `/api/v1/pdf` - Method: POST - Description: 将网页保存为PDF并上传到云存储 - Request Body: ```json { "webpage": "需要生成PDF的网页URL", "device": "设备缩放因子", "width": "页面宽度", "height": "页面高度", "encoding": "编码方式(binary/base64)" } ``` ## 模块说明 ### browser.js 浏览器管理模块,负责: - 浏览器实例的创建和销毁 - 页面资源的管理和复用 - 浏览器连接的维护 ### storage.js 存储服务模块,支持: - 腾讯云COS对象存储 - 阿里云OSS对象存储 - 本地存储 - 统一的上传接口 - 自动根据配置选择存储类型 ### params.js 参数处理模块,负责: - 处理截图参数 - 处理上传参数 ### utils.js 工具类模块,包含: - 随机字符串生成函数 ### routes.js 路由处理模块,负责: - 处理健康检查接口 - 处理海报生成接口 - 处理PDF下载接口 ### constants.js 常量定义模块,包含: - 默认配置常量 - 样式定义常量 - HTTP状态码常量 - 字符串常量