{"_id":"@ddc-123/print-service-client","name":"@ddc-123/print-service-client","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ddc-123/print-service-client","version":"0.1.0","type":"module","description":"打印服务客户端 SDK —— 支持服务器打印（云打印）和浏览器打印","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./web":{"types":"./dist/web.d.ts","import":"./dist/web.js"},"./raw":{"types":"./dist/index.d.ts","import":"./dist/raw.js"},"./web-raw":{"types":"./dist/web.d.ts","import":"./dist/web-raw.js"}},"scripts":{"build":"vite build && cross-env BUNDLED_TARGET=raw vite build --config vite.config.bundled.ts && cross-env BUNDLED_TARGET=web-raw vite build --config vite.config.bundled.ts","prepublishOnly":"npm run build"},"dependencies":{"axios":"^1.7.0"},"peerDependencies":{"vue-plugin-hiprint":">=0.0.60"},"peerDependenciesMeta":{"vue-plugin-hiprint":{"optional":true}},"devDependencies":{"cross-env":"^10.1.0","typescript":"^5.5.0","vite":"^6.0.0","vite-plugin-dts":"^4.0.0","vue-plugin-hiprint":"^0.0.60"},"license":"MIT","publishConfig":{"access":"public"},"gitHead":"ac3c9b2b4e06529e6b9f07ada720f9f50a315296","_id":"@ddc-123/print-service-client@0.1.0","_nodeVersion":"24.4.1","_npmVersion":"8.3.1","dist":{"integrity":"sha512-i7gR1WHdtqBqAaTMeK0KZDS6SjOuvt2rnIt4ZLRsDsVqZP7Xq27foJLkAvLTyAD6n27f5hhp/lzwXTpc5WKN/w==","shasum":"3dbfd558f3cfe6c458a66b292f269380a903646a","tarball":"https://registry.npmjs.org/@ddc-123/print-service-client/-/print-service-client-0.1.0.tgz","fileCount":22,"unpackedSize":4706151,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCARymM64F08lDab/jeOCOUr1jZLJAH40eBn8/rl5/RDAIgJUoYXAOIBclj6x/n1rqvl08yMDaGAao7e/ERB5nYNNo="}]},"_npmUser":{"name":"ddc-123","email":"791876091@qq.com"},"directories":{},"maintainers":[{"name":"ddc-123","email":"791876091@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/print-service-client_0.1.0_1773899150565_0.701664029151279"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-19T05:45:50.402Z","0.1.0":"2026-03-19T05:45:50.737Z","modified":"2026-03-19T05:45:50.995Z"},"maintainers":[{"name":"ddc-123","email":"791876091@qq.com"}],"description":"打印服务客户端 SDK —— 支持服务器打印（云打印）和浏览器打印","license":"MIT","readme":"# @ddc-123/print-service-client\r\n\r\n打印服务客户端 SDK，支持**服务器打印（云打印）**和**浏览器打印（Web 打印）**。\r\n\r\n## 安装\r\n\r\n```bash\r\nnpm install @ddc-123/print-service-client\r\n```\r\n\r\n如需浏览器打印功能，还需安装：\r\n\r\n```bash\r\nnpm install vue-plugin-hiprint@^0.0.60\r\n```\r\n\r\n## 快速开始\r\n\r\n### 初始化\r\n\r\n```typescript\r\nimport { createPrintClient } from '@ddc-123/print-service-client'\r\n\r\nconst printClient = createPrintClient({\r\n  baseURL: '/dy',                    // 打印服务代理路径，默认 '/dy'\r\n  editAddress: 'http://editor:port', // 模板编辑器地址\r\n  onLoading: (loading) => {          // Loading 回调（可选）\r\n    // 显示/隐藏加载状态\r\n  },\r\n  onError: (msg) => {                // 错误回调（可选）\r\n    // 显示错误提示\r\n  },\r\n})\r\n```\r\n\r\n### 服务器打印\r\n\r\n```typescript\r\nimport { PrintTask } from '@ddc-123/print-service-client'\r\n\r\n// 获取打印机列表\r\nconst printers = await printClient.getPrinterList()\r\n\r\n// 获取模板列表\r\nconst templates = await printClient.getPrintTemplateList()\r\n\r\n// 单条打印\r\nconst task = new PrintTask()\r\ntask.uuid = '模板ID'\r\ntask.printer = '打印机名称'\r\ntask.title = '出库单'\r\ntask.data = { orderNo: 'WMS-2024-001', productName: '物料A', quantity: 100 }\r\nawait printClient.printSingle(task)\r\n\r\n// 批量打印\r\nconst mulTask = new PrintTask()\r\nmulTask.uuid = '模板ID'\r\nmulTask.printer = '打印机名称'\r\nmulTask.title = '库存标签'\r\nmulTask.data = [\r\n  { code: 'A001', name: '物料A' },\r\n  { code: 'A002', name: '物料B' },\r\n]\r\nawait printClient.printMul(mulTask as PrintTask & { data: any[] })\r\n```\r\n\r\n### 浏览器打印\r\n\r\n```typescript\r\nimport { webPrint, disAutoConnect } from '@ddc-123/print-service-client/web'\r\n\r\n// 应用启动时调用一次\r\ndisAutoConnect()\r\n\r\n// 获取模板内容后调用\r\nconst res = await printClient.getPrintTemplate({ uuid: '模板ID' })\r\nwebPrint(res.data.templateContent, { orderNo: 'WMS-2024-001' })\r\n```\r\n\r\n### 模板编辑\r\n\r\n```typescript\r\n// 跳转到 hiprint 编辑器\r\nprintClient.goPrintTemplateEditPage('模板ID')\r\n```\r\n\r\n### 自定义拦截器\r\n\r\n```typescript\r\n// 通过暴露的 axios 实例添加自定义拦截器\r\nprintClient.axiosInstance.interceptors.request.use((config) => {\r\n  config.headers.Authorization = `Bearer ${getToken()}`\r\n  return config\r\n})\r\n```\r\n\r\n## 纯 HTML+JS 项目\r\n\r\n提供全打包版本（所有依赖内置，零外部依赖）：\r\n\r\n```html\r\n<script type=\"module\">\r\n  // 主功能（含 axios）\r\n  import { createPrintClient, PrintTask } from './node_modules/@ddc-123/print-service-client/dist/raw.js'\r\n\r\n  const client = createPrintClient({ baseURL: '/dy' })\r\n\r\n  const task = new PrintTask()\r\n  task.uuid = '模板ID'\r\n  task.printer = '打印机名称'\r\n  task.data = { orderNo: 'WMS-2024-001' }\r\n  await client.printSingle(task)\r\n</script>\r\n```\r\n\r\n浏览器打印全打包版：\r\n\r\n```html\r\n<script type=\"module\">\r\n  import { webPrint, disAutoConnect } from './node_modules/@ddc-123/print-service-client/dist/web-raw.js'\r\n\r\n  disAutoConnect()\r\n  // ...\r\n</script>\r\n```\r\n\r\n## 代理配置\r\n\r\n前端所有请求通过 `baseURL`（默认 `/dy`）发出，需配置代理转发到打印服务。\r\n\r\n### Vite 开发环境\r\n\r\n```typescript\r\n// vite.config.ts\r\nexport default defineConfig({\r\n  server: {\r\n    proxy: {\r\n      '^/dy': {\r\n        changeOrigin: true,\r\n        target: 'http://打印服务IP:端口',\r\n        rewrite: (path) => path.replace(/^\\/dy/, ''),\r\n      },\r\n    },\r\n  },\r\n})\r\n```\r\n\r\n### Nginx 生产环境\r\n\r\n```nginx\r\nlocation /dy/ {\r\n    proxy_pass http://打印服务IP:端口/;\r\n    proxy_set_header Host $host;\r\n    proxy_set_header X-Real-IP $remote_addr;\r\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n}\r\n```\r\n\r\n## 导出路径\r\n\r\n| 路径 | 用途 | 外部依赖 |\r\n|------|------|---------|\r\n| `@ddc-123/print-service-client` | 主入口（服务器打印 + 模板管理） | axios |\r\n| `@ddc-123/print-service-client/web` | 浏览器打印 | vue-plugin-hiprint |\r\n| `@ddc-123/print-service-client/raw` | 主入口全打包版 | 无 |\r\n| `@ddc-123/print-service-client/web-raw` | 浏览器打印全打包版 | 无 |\r\n\r\n## API\r\n\r\n### `createPrintClient(config?)`\r\n\r\n| 配置项 | 类型 | 默认值 | 说明 |\r\n|--------|------|--------|------|\r\n| `baseURL` | `string` | `'/dy'` | 打印服务代理路径 |\r\n| `editAddress` | `string` | — | 模板编辑器地址 |\r\n| `timeout` | `number` | `0` | 请求超时（毫秒） |\r\n| `withCredentials` | `boolean` | `true` | 是否携带凭证 |\r\n| `onLoading` | `(loading: boolean) => void` | — | Loading 状态回调 |\r\n| `onError` | `(msg: string) => void` | — | 错误消息回调 |\r\n\r\n### 返回的 `PrintClient` 实例方法\r\n\r\n| 方法 | 说明 |\r\n|------|------|\r\n| `getPrinterList(params?)` | 获取打印机列表 |\r\n| `getPrintTemplateList(params?)` | 获取所有打印模板 |\r\n| `getPrintTemplate({ uuid })` | 根据 uuid 获取模板 |\r\n| `removePrintTemplate({ uuid })` | 删除模板 |\r\n| `printSingle(task)` | 单条打印（自动获取模板） |\r\n| `printMul(task)` | 批量打印（自动获取模板） |\r\n| `goPrintTemplateEditPage(uuid)` | 跳转模板编辑器 |\r\n| `axiosInstance` | 底层 axios 实例 |\r\n","readmeFilename":"README.md","_rev":"1-3717a35ea576fc0bbe33748b355fb454"}