zikai 25bc00ac51 refactor: 清理死代码 + 提前失败 + 错误记录控制台
- downloadUrl 提升为顶层纯函数导出, JobList 不再为此实例化整个 api 对象
- createPdfApi 返回对象移除内部用的 getJob / downloadUrl (高内聚)
- useLocale 移除未用的 isZh/pick 返回值
- 移除 4 个死 i18n key (upload.uploading/submitted/failed/networkError)
- App.vue: import {watch} 提升至顶部; onDelete 补 try/catch + console.error
- usePdfApi: pollPending 单任务失败补 console.warn; uploadFile 响应解析失败补 console.error
- docs: 新增 error-handling.md / integration.md (嵌入细节从 README 移入)
- README: 修正 dev 端口 5173->5175; 补 apache2 部署说明
2026-07-28 11:12:37 +08:00

zPDF_package - PDF 转换前端

上传 epub 文件转为 PDF显示转换进度完成后下载。复用 zTools2 后端 API/api/pdf/*)。便携式组件,可独立运行,亦可作为 mainPage 的子模块经构建期组件 import 集成展示(像 timeTableFix)。

功能

  • 上传 epub拖拽/选择≤250MB客户端预校验 + 服务端校验)
  • 上传进度显示
  • 转换进度轮询pending/converting -> done/failed
  • 完成后下载 PDF
  • 用户软删(不再对自己展示;管理员仍可见,需管理员硬删才真正删除)
  • 凭浏览器 cookiezk_pdfhttpOnly标识用户、记住任务

项目结构

zPDF_package/
├── index.html                  Vite 入口
├── package.json
├── vite.config.js              base:'./' 便携式构建
├── vitest.config.js
├── .npmrc                      npmmirror 镜像加速
├── src/
│   ├── main.js                 应用挂载i18n + 全局样式)
│   ├── App.vue                 便携式根组件(接受 :locale prop独立/嵌入两用)
│   ├── i18n/                   独立 vue-i18n 实例 + 中英 locale
│   ├── composables/
│   │   ├── usePdfApi.js        API 客户端 + 进度轮询状态机(可单测)
│   │   └── useLocale.js        语言辅助(直读自身 i18n 实例)
│   ├── components/
│   │   ├── Uploader.vue        拖拽/选择 + 上传进度
│   │   └── JobList.vue         任务列表(进度/状态/下载/删除)
│   └── styles/global.css       全局重置 + 设计令牌
└── test/                       Vitest 单元测试20 项)

外部依赖

说明
Node.js ≥ 18
zTools2 后端 /api/pdf/*同源调用cookie 自动管理)

前端纯静态无运行期后端依赖API 由 zTools2 提供。生产部署经 zMainPage 作为子模块集成,由其 apache2 静态托管 + /api 反代到 zTools2无独立 apache2 配置)。

如何使用

# 克隆并安装
git clone https://git.zikai.wang/zikai/zPDF_package.git
cd zPDF_package
npm install        # 已配 npmmirror 镜像加速

npm run dev        # 开发服务器 http://localhost:5175vite.config.js 已配 /api 代理到 zTools2:6867
npm run build      # 构建到 dist/
npm test           # 单元测试20 项)

开发时 /api/pdf/* 由 vite 代理到本地 zTools2127.0.0.1:6867生产环境由 mainPage 同源反代到 zTools2cookie 第一方生效。

嵌入 mainPage

作为 mainPage 的 git submodule经构建期组件 import 集成(非 iframe。详见 docs/integration.md

技术栈

选择
框架 Vue 3.5SFC<script setup>
构建 Vite 6
国际化 vue-i18n 9中文同步英文懒加载
状态管理 composable 单例
测试 Vitest
包源 npmmirror.com中国镜像加速

了解更多

Description
No description provided
Readme 96 KiB
Languages
JavaScript 51.7%
Vue 44%
CSS 3.5%
HTML 0.8%