窄屏(≤768px,与宿主 zMainPage 断点一致)优化: - JobList 表格转卡片式:文件名为标题,大小/时间降为次要行(带列名前缀), 状态与操作独占一行,避免横向滚动;表头隐藏 - Uploader 拖拽区缩小(padding 40->24、min-height 160->120),移动端无拖拽语义 - 按钮触控目标加大(padding 5->8、font 0.85->0.9),符合移动端可点击区建议 - 统一断点为 768px(原 JobList 用 640px,与宿主不一致)
zPDF_package - PDF 转换前端
上传 epub 文件转为 PDF,显示转换进度,完成后下载。复用 zTools2 后端 API(/api/pdf/*)。便携式组件,可独立运行,亦可作为 mainPage 的子模块经构建期组件 import 集成展示(像 timeTableFix)。
功能
- 上传 epub(拖拽/选择,≤250MB,客户端预校验 + 服务端校验)
- 上传进度显示
- 转换进度轮询(pending/converting -> done/failed)
- 完成后下载 PDF
- 用户软删(不再对自己展示;管理员仍可见,需管理员硬删才真正删除)
- 凭浏览器 cookie(
zk_pdf,httpOnly)标识用户、记住任务
项目结构
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 提供。
如何使用
# 克隆并安装
git clone https://git.zikai.wang/zikai/zPDF_package.git
cd zPDF_package
npm install # 已配 npmmirror 镜像加速
npm run dev # 开发服务器 http://localhost:5173(需 zTools2 在同源或配置代理)
npm run build # 构建到 dist/
npm test # 单元测试(20 项)
开发时
/api/pdf/*需指向 zTools2。可配 Vite 代理;生产环境由 mainPage 同源反代到 zTools2,cookie 第一方生效。
嵌入 mainPage
作为 mainPage 的 git submodule(third_party/zPDF_package),mainPage 在构建期直接 import 本项目的 src/App.vue 作为组件挂载(非 iframe,与 timeTableFix 同范式):mainPage 侧 src/modules/pdf/Pdf.vue 套 PageShell 并透传 :locale;组件内 usePdfApi.js 同源 fetch /api/pdf/*,httpOnly cookie(zk_pdf)经反代第一方自动携带,无需 CORS。组件自身保持「无 host 依赖」:不持 defineOptions({ name })、不引 mainPage 的 i18n,仅靠 :locale prop 驱动自有 i18n 实例。详见 mainPage 的 docs/submodule-zPDF_package.md。
技术栈
| 项 | 选择 |
|---|---|
| 框架 | Vue 3.5(SFC,<script setup>) |
| 构建 | Vite 6 |
| 国际化 | vue-i18n 9(中文同步,英文懒加载) |
| 状态管理 | composable 单例 |
| 测试 | Vitest |
| 包源 | npmmirror.com(中国镜像加速) |
了解更多
- 嵌入 mainPage(构建期组件 import)
- 后端 API 与转换实现见 zTools2 README
Description
Languages
JavaScript
51.7%
Vue
44%
CSS
3.5%
HTML
0.8%