myprint-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 13.5 kB
Source Map (JSON)
{"version":3,"file":"printer.mjs","sources":["../../../src/printer.ts"],"sourcesContent":["import { App, h, render, VNode } from 'vue-demi';\nimport PrintView from './components/print/print.vue';\nimport previewPanelView from './components/preview/preview-panel.vue';\nimport { getCurrentPanel, parentInitElement } from './utils/elementUtil';\nimport { MyPrintConfig, Panel, PrintResult, PrintOptions } from './types/entity';\nimport {\n arrayBuffer2Base64,\n blob2Base64,\n generateUUID,\n isArrayBuffer,\n isBlob,\n isUint8Array,\n uint8Array2Base64\n} from './utils/utils';\nimport { myPrintClientService } from './plugins/myprintClientService';\nimport i18n from './locales';\nimport { useAppStoreHook } from './stores/app';\nimport { useConfigStore } from './stores/config';\nimport { useSocket } from './stores/socket';\n\nexport const myPrintOptions: MyPrintConfig = {\n disabledClient: false\n};\n\nlet printNode: VNode = null!;\nlet previewNode: VNode = null!;\nlet handleChromePrint: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleClientPrint: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleChromeDownloadPdf: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleClientDownloadPdf: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleServerDownloadPdf: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleChromeDownloadImg: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleServerDownloadImg: (printProps: PrintOptions) => Promise<PrintResult> = null!;\nlet handleChromePreview: (printProps: PrintOptions) => Promise<PrintResult> = null!;\n\nexport function installPrinter(app: App<any>) {\n if (!printNode) {\n printNode = h(PrintView, {});\n const container = document.createElement('div');\n printNode.appContext = app._context;\n\n render(printNode, container);\n\n handleChromePrint = printNode.component!.exposed!.handleChromePrint;\n handleClientPrint = printNode.component!.exposed!.handleClientPrint;\n\n handleChromeDownloadPdf = printNode.component!.exposed!.handleChromeDownloadPdf;\n handleClientDownloadPdf = printNode.component!.exposed!.handleClientDownloadPdf;\n handleServerDownloadPdf = printNode.component!.exposed!.handleServerDownloadPdf;\n handleChromeDownloadImg = printNode.component!.exposed!.handleChromeDownloadImg;\n handleServerDownloadImg = printNode.component!.exposed!.handleServerDownloadImg;\n\n document.body.appendChild(container.firstElementChild!);\n }\n\n if (!previewNode) {\n previewNode = h(previewPanelView, {});\n const container = document.createElement('div');\n previewNode.appContext = app._context;\n\n render(previewNode, container);\n\n handleChromePreview = previewNode.component!.exposed!.handleChromePreview;\n document.body.appendChild(container);\n }\n}\n\nfunction initPanel(panel: Panel) {\n panel.runtimeOption = {} as any;\n for (let i = 0; i < panel.elementList.length; i++) {\n const element = panel.elementList[i];\n parentInitElement(panel, panel, element, i);\n }\n panel.pageHeader && parentInitElement(panel, panel, panel.pageHeader, 0);\n panel.pageFooter && parentInitElement(panel, panel, panel.pageFooter, 0);\n}\n\nfunction convertPrintProps(printProps: PrintOptions) {\n return new Promise<PrintOptions>(async (resolve, _reject) => {\n let panel = printProps.panel;\n if (printProps.file) { // 打印pdf\n if (isBlob(printProps.file)) {\n printProps.file = await blob2Base64(printProps.file as Blob);\n }\n if (isArrayBuffer(printProps.file)) {\n printProps.file = arrayBuffer2Base64(printProps.file as ArrayBuffer);\n }\n if (isUint8Array(printProps.file)) {\n printProps.file = uint8Array2Base64(printProps.file as Uint8Array);\n }\n } else { // 打印panel\n if (panel == null) {\n panel = getCurrentPanel();\n } else {\n if (typeof printProps.panel == 'string') {\n panel = JSON.parse(printProps.panel);\n initPanel(panel as Panel);\n }\n }\n }\n\n if (!printProps.taskId) {\n printProps.taskId = generateUUID();\n }\n resolve({\n ...printProps,\n panel\n });\n });\n}\n\nexport const MyPrinter = {\n initMyPrinter(options: MyPrintConfig) {\n if (options.serverUrl) {\n if (options.serverUrl.endsWith('/')) {\n myPrintOptions.serverUrl = options.serverUrl.slice(0, -1);\n } else {\n myPrintOptions.serverUrl = options.serverUrl;\n }\n }\n if (options.clientUrl) {\n if (options.clientUrl.endsWith('/')) {\n useConfigStore().clientUrl = options.clientUrl.slice(0, -1);\n } else {\n useConfigStore().clientUrl = options.clientUrl;\n }\n }\n myPrintOptions.disabledClient = options.disabledClient == null ? false : options.disabledClient;\n },\n\n setLocale<T extends typeof i18n.global.locale.value>(locale: T) {\n useAppStoreHook().SET_LOCALE(locale);\n },\n\n setClientUrl(clientUrl: string) {\n if (!clientUrl) {\n return;\n }\n if (clientUrl.endsWith('/')) {\n useConfigStore().clientUrl = clientUrl.slice(0, -1);\n } else {\n useConfigStore().clientUrl = clientUrl;\n }\n useSocket().INIT_SOCKET();\n },\n\n setServerUrl(serverUrl: string) {\n if (serverUrl.endsWith('/')) {\n myPrintOptions.serverUrl = serverUrl.slice(0, -1);\n } else {\n myPrintOptions.serverUrl = serverUrl;\n }\n },\n\n clientConnectIs() {\n return myPrintClientService.connectIs();\n },\n\n getPrinterList() {\n return myPrintClientService.getPrinterList();\n },\n\n getDefaultPrinter() {\n const printList = myPrintClientService.getPrinterList();\n if (printList == null || printList.length == 0) {\n return null;\n }\n for (let printListElement of printList) {\n if (printListElement.isDefault) {\n return printListElement;\n }\n }\n return printList[0];\n },\n\n asyncGetPrinterList() {\n return myPrintClientService.asyncGetPrinterList();\n },\n\n chromePreview(printProps: PrintOptions) {\n return convertPrintProps(printProps).then(handleChromePreview);\n },\n\n chromePrinter(printProps: PrintOptions) {\n return convertPrintProps(printProps).then(handleChromePrint);\n },\n\n clientPrinter(printProps: PrintOptions) {\n return convertPrintProps(printProps).then(handleClientPrint);\n },\n\n pdfChrome(printProps: PrintOptions) {\n return convertPrintProps(printProps).then(handleChromeDownloadPdf);\n },\n\n pdfClient(printProps: PrintOptions) {\n return convertPrintProps(printProps).then(handleClientDownloadPdf);\n },\n\n pdfServer(printProps: PrintOptions) {\n return convertPrintProps(printProps).then(handleServerDownloadPdf);\n },\n\n imgChrome(printProps: PrintOptions) {\n return convertPrintProps(printProps).then(handleChromeDownloadImg);\n },\n\n imgServer(printProps: PrintOptions) {\n return convertPrintProps(printProps).then(handleServerDownloadImg);\n }\n\n};\n"],"names":[],"mappings":"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"}