{"_id":"@a4-pagination-print/vue","_rev":"2-8cdfaffaaae25864365b245f9a0fe8fb","name":"@a4-pagination-print/vue","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@a4-pagination-print/vue","version":"0.1.0","keywords":["a4","pagination","vue","pdf","report","page-break"],"license":"MIT","_id":"@a4-pagination-print/vue@0.1.0","maintainers":[{"name":"qq312999192","email":"312999192@qq.com"}],"dist":{"shasum":"11834389ccd45fee9eb754eae88ea66aa9a6f6b4","tarball":"https://registry.npmjs.org/@a4-pagination-print/vue/-/vue-0.1.0.tgz","fileCount":5,"integrity":"sha512-xPXYG3nkGnPOLm6ynSSRxkblhyZJM8PDo6XDPj3dTvyWSrkP7ybW6f9QeCHp0jDAx9b4928l6Ye80YosdiiWOA==","signatures":[{"sig":"MEUCIQCzNW4yfZf/HqY9b0KHt9btraJXiwz3nICpAooHQvFF3gIgaDUq7rEjKwHmeUBFabhgyTZYmiKbIvaDTVHtac7uEFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127323},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"vite","build":"vue-tsc -p tsconfig.json && vite build --config vite.config.lib.ts","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"qq312999192","email":"312999192@qq.com"},"_npmVersion":"10.7.0","description":"A4 pagination — Vue 3 components and composables","directories":{},"sideEffects":false,"_nodeVersion":"20.15.0","dependencies":{"@a4-pagination-print/core":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.4.0","vite":"^5.4.0","echarts":"^6.1.0","vue-tsc":"^2.0.0","typescript":"^5.5.0","@vitejs/plugin-vue":"^5.1.0"},"peerDependencies":{"vue":"^3.4.0","echarts":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/vue_0.1.0_1785023955743_0.08357411557057137","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@a4-pagination-print/vue","version":"0.1.1","description":"A4 pagination — Vue 3 components and composables","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","default":"./dist/index.js"}},"sideEffects":false,"scripts":{"build":"vue-tsc -p tsconfig.json && vite build --config vite.config.lib.ts","dev":"vite","preview":"vite preview","prepublishOnly":"npm run build"},"dependencies":{"@a4-pagination-print/core":"^0.1.0"},"peerDependencies":{"vue":"^3.4.0","echarts":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"echarts":{"optional":true}},"keywords":["a4","pagination","vue","pdf","report","page-break"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/qizhifeng00/a4-pagination-print-vue.git"},"homepage":"https://github.com/qizhifeng00/a4-pagination-print-vue#readme","bugs":{"url":"https://github.com/qizhifeng00/a4-pagination-print-vue/issues"},"devDependencies":{"@vitejs/plugin-vue":"^5.1.0","echarts":"^6.1.0","typescript":"^5.5.0","vite":"^5.4.0","vue":"^3.4.0","vue-tsc":"^2.0.0"},"_id":"@a4-pagination-print/vue@0.1.1","gitHead":"6d9587a746f83200479d78d3ac282a5dd86c8603","_nodeVersion":"20.15.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-8Pm2lRbcfYd4mLKDgThTfSPkuruRmrjINpU4KGSfFYUcWnuqEZE0JBEpanL7cs8MsF9quOzNqM/IYEiCuRyxHA==","shasum":"a906dfddf96b68594fe9bd98f23b999300a0f671","tarball":"https://registry.npmjs.org/@a4-pagination-print/vue/-/vue-0.1.1.tgz","fileCount":6,"unpackedSize":132162,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDjCxFGQNO4cQLFicFZM1qXLs0c2aFGo961IfSwTp7NwAiA2NpJuixukZrdYevP+KWuXXdeq8n6CXx1S6hdLECOAyg=="}]},"_npmUser":{"name":"qq312999192","email":"312999192@qq.com"},"directories":{},"maintainers":[{"name":"qq312999192","email":"312999192@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue_0.1.1_1785025015423_0.1542581711805222"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-25T23:59:15.584Z","modified":"2026-07-26T00:16:55.816Z","0.1.0":"2026-07-25T23:59:15.894Z","0.1.1":"2026-07-26T00:16:55.571Z"},"license":"MIT","keywords":["a4","pagination","vue","pdf","report","page-break"],"description":"A4 pagination — Vue 3 components and composables","maintainers":[{"name":"qq312999192","email":"312999192@qq.com"}],"readme":"# @a4-pagination-print/vue\n\n[![npm version](https://img.shields.io/npm/v/@a4-pagination-print/vue)](https://www.npmjs.com/package/@a4-pagination-print/vue)\n[![license](https://img.shields.io/npm/l/@a4-pagination-print/vue)](https://github.com/qizhifeng00/a4-pagination-print-vue/blob/main/LICENSE)\n\nA4 分页 — Vue 3 组件与 Composables，用于在浏览器中渲染和打印 A4 报表页。\n\n```bash\nnpm install @a4-pagination-print/vue @a4-pagination-print/core\n```\n\n## 适用场景\n\n- Vue 3 项目中需要**分页报表展示**\n- 医疗报告、财务报表、数据日报等需要**精确 A4 打印**\n- 浏览器端 PDF 导出\n\n## 架构分层\n\n本包提供三层 API，按需选用：\n\n### Layer 2: 自由搭建页面\n\n直接用 `A4Page` + Block 组件自建页面，适合高度自定义场景：\n\n```vue\n<script setup>\nimport { A4Page } from '@a4-pagination-print/vue';\nimport * as echarts from 'echarts';\n\nconst page = {\n  date: '2026-07-24',\n  pageNumber: 1,\n  blocks: [\n    { id: '1', type: 'text', height: 8, breakable: false, content: '患者信息' },\n    { id: '2', type: 'table', height: 0, breakable: true, columns: [...], rows: [...] },\n    { id: '3', type: 'chart', height: 100, breakable: false, option: {...} },\n  ],\n};\n</script>\n\n<template>\n  <A4Page :page=\"page\" :echarts=\"echarts\" />\n</template>\n```\n\n### A4Page Props\n\n| Prop | 类型 | 默认 | 说明 |\n|---|---|---|---|\n| `page` | `Page` | required | 页面数据 |\n| `scale` | `number` | `3.78` | mm→px 缩放 |\n| `visible` | `boolean` | `true` | 是否显示 |\n| `active` | `boolean` | `false` | 打印时的 active 标记 |\n| `dayNumber` | `number` | — | 第几天（页脚显示\"第X天\"） |\n| `showHeader` | `boolean` | `true` | 显示页眉 |\n| `showFooter` | `boolean` | `true` | 显示页脚 |\n| `echarts` | `any` | — | ECharts 引用 |\n\n### 自定义 Block 类型\n\n通过 slot 注入业务组件，库代码零修改：\n\n```vue\n<!-- 定义业务类型 -->\n<script setup>\ninterface SignatureBlock extends Block {\n  type: 'signature';\n  label: string;\n  signer?: string;\n}\n</script>\n\n<!-- 注入到 A4Page -->\n<A4Page :page=\"page\">\n  <template #block-signature=\"{ block, scale }\">\n    <SignatureCell :block=\"block\" :scale=\"scale\" />\n  </template>\n</A4Page>\n```\n\n### Layer 3: Composables\n\n#### useReport — 报表状态管理\n\n```typescript\nimport { useReport } from '@a4-pagination-print/vue';\n\nconst {\n  pages,            // ComputedRef<Page[]>\n  currentPage,      // ComputedRef<Page | null>\n  currentIndex,     // Ref<number>\n  totalPages,        // ComputedRef<number>\n  isFirst,           // ComputedRef<boolean>\n  isLast,            // ComputedRef<boolean>\n  meta,              // ComputedRef<DatePaginationMeta>\n  goNext,            // () => void\n  goPrev,            // () => void\n  goToDate,          // (date: string) => void\n  goToPage,          // (index: number) => void\n  setGroups,         // (groups: DateGroup[]) => void\n} = useReport({ groups: [...], pageHeight: 280 });\n```\n\n#### usePdfGenerator — PDF 导出\n\n```typescript\nimport { usePdfGenerator } from '@a4-pagination-print/vue';\n\nconst { generate, loading, error } = usePdfGenerator();\n\n// 导出当前页\nawait generate([page], { filename: 'page1.pdf' });\n\n// 导出日期范围\nconst filtered = pages.filter((p) => p.date >= '2026-07-24');\nawait generate(filtered, { filename: 'range.pdf' });\n\n// 导出全部\nawait generate(pages, { title: '报表', filename: 'all.pdf' });\n\n// autoDownload: false → 返回 Response\nconst res = await generate(pages, { autoDownload: false });\n```\n\n| Option | 默认 | 说明 |\n|---|---|---|\n| `baseUrl` | `http://localhost:3000` | PDF Service 地址 |\n| `title` | — | 报表标题 |\n| `filename` | `report-{timestamp}.pdf` | 下载文件名 |\n| `perPage` | `false` | 逐页独立 PDF |\n| `printBackground` | `true` | 打印背景 |\n| `autoDownload` | `true` | `false` 返回 Response |\n\n### Layer 4: A4Report — 开箱即用\n\n```vue\n<template>\n  <A4Report\n    :groups=\"groups\"\n    title=\"医疗报表\"\n    :echarts=\"echarts\"\n    @export-current-pdf=\"...\"\n    @export-all-pdf=\"...\"\n  />\n</template>\n```\n\n| Prop | 类型 | 默认 |\n|---|---|---|\n| `groups` | `DateGroup[]` | required |\n| `title` | `string` | — |\n| `scale` | `number` | `3.78` |\n| `echarts` | `any` | — |\n| `showToolbar` | `boolean` | `true` |\n| `toolbarPosition` | `'top' \\| 'bottom' \\| 'both'` | `'top'` |\n\n## 依赖\n\n- `@a4-pagination-print/core` — 分页引擎\n- `vue` — ^3.4.0 (peer)\n- `echarts` — ^5.0.0 或 ^6.0.0 (peer, 可选，仅图表需要)\n\n## License\n\nMIT\n","readmeFilename":"README.md","homepage":"https://github.com/qizhifeng00/a4-pagination-print-vue#readme","repository":{"type":"git","url":"git+https://github.com/qizhifeng00/a4-pagination-print-vue.git"},"bugs":{"url":"https://github.com/qizhifeng00/a4-pagination-print-vue/issues"}}