PrintSDK 使用指南
<script src="js/pdf-badge-renderer.umd.js"></script>
<script src="js/print-sdk.umd.js"></script>
创建客户端并连接:
const client = PrintSDK.createClient({ url: 'ws://localhost:3152', heartbeat: { interval: 10000, timeout: 30000 }, codec: 'msgpack' })
await client.connect()
创建打印管理器并设置渲染器:
const { TemplateRenderer } = window.PDFBadgeRenderer
const renderer = async (tpl, data, opts) => new TemplateRenderer().renderTemplate(tpl, data, opts)
const pm = PrintSDK.createPrintManager(client, renderer)
获取打印机列表:
pm.listPrinters()
pm.onStatus(s => { if (s.type === 'printers') console.log(s.data) })
发送打印任务:
pm.setDefaults({ printer: 'HP', copies: 2, width: 90, height: 110, format: 'png' })
pm.enqueue({ template: tplJson, data: dataJson })
await pm.start()
// API 概览示例
// 1) 创建客户端(第二参数为日志级别)
const client = PrintSDK.createClient({ url: 'ws://localhost:3152' }, 'info')
// 2) 创建打印管理器(传入渲染器)
const { TemplateRenderer } = window.PDFBadgeRenderer
const renderer = async (tpl, data, opts) => new TemplateRenderer().renderTemplate(tpl, data, opts)
const pm = PrintSDK.createPrintManager(client, renderer)
// 3) 发送自定义消息到服务端
client.send('ping', { t: Date.now() }) // 服务端按需处理
// 4) 入队打印任务
pm.enqueue({ template: tplJson, data: dataJson })
// 5) 控制队列
await pm.start() // 开始
pm.pause() // 暂停
pm.clear() // 清空
// 6) 订阅状态
pm.onStatus(s => console.log(s)) // printers | progress | complete | error
// 7) 获取打印机列表
pm.listPrinters()
// 8) 设置默认打印参数
pm.setDefaults({ printer: 'HP', copies: 1, format: 'png' })
// WebSocket 事件示例
client.on('connected', () => console.log('已连接'))
client.on('disconnected', () => console.log('已断开'))
client.on('error', err => console.error('连接错误', err))
client.on('message', msg => console.log('收到消息', msg))
// 打印状态事件示例
pm.onStatus(s => {
switch (s.type) {
case 'printers': // 打印机列表
console.log(s.data)
break
case 'progress': // 队列进度与当前任务
console.log(s.data)
break
case 'complete': // 队列完成
console.log('done')
break
case 'error': // 队列或渲染错误
console.error(s.data)
break
}
})
js/print-sdk.d.ts
PrintSDK.version