zikai cfbf4ad2b4 feat: PDF 页签移动端兼容
窄屏(≤768px,与宿主 zMainPage 断点一致)优化:
- JobList 表格转卡片式:文件名为标题,大小/时间降为次要行(带列名前缀),
  状态与操作独占一行,避免横向滚动;表头隐藏
- Uploader 拖拽区缩小(padding 40->24、min-height 160->120),移动端无拖拽语义
- 按钮触控目标加大(padding 5->8、font 0.85->0.9),符合移动端可点击区建议
- 统一断点为 768px(原 JobList 用 640px,与宿主不一致)
2026-07-27 17:37:35 +08:00
2026-07-27 17:37:35 +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 提供。

如何使用

# 克隆并安装
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 同源反代到 zTools2cookie 第一方生效。

嵌入 mainPage

作为 mainPage 的 git submodulethird_party/zPDF_packagemainPage 在构建期直接 import 本项目的 src/App.vue 作为组件挂载(非 iframetimeTableFix 同范式mainPage 侧 src/modules/pdf/Pdf.vuePageShell 并透传 :locale;组件内 usePdfApi.js 同源 fetch /api/pdf/*httpOnly cookiezk_pdf)经反代第一方自动携带,无需 CORS。组件自身保持「无 host 依赖」:不持 defineOptions({ name })、不引 mainPage 的 i18n仅靠 :locale prop 驱动自有 i18n 实例。详见 mainPage 的 docs/submodule-zPDF_package.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%