lilei 3 лет назад
Родитель
Сommit
c89ebac8d5
1 измененных файлов с 25 добавлено и 20 удалено
  1. 25 20
      src/libs/JGPrint.js

+ 25 - 20
src/libs/JGPrint.js

@@ -95,20 +95,21 @@ export const demoGetBASE64 = function (dataArray) {
   return strData
 }
 // 下载pdf
-export const demoDownloadPDF = function (url) {
-  if (!(/^https?:/i.test(url))) return
-  if (window.XMLHttpRequest) var xhr = new XMLHttpRequest(); else var xhr = new ActiveXObject('MSXML2.XMLHTTP')
-  xhr.open('GET', url, false) // 同步方式
-  if (xhr.overrideMimeType) {
-    try {
-      xhr.responseType = 'arraybuffer'
-      var arrybuffer = true
-    } catch (err) {
-      xhr.overrideMimeType('text/plain; charset=x-user-defined')
-    }
-  }
-  xhr.send(null)
-  var data = xhr.response || xhr.responseBody
+export const demoDownloadPDF = function (data) {
+  // if (!(/^https?:/i.test(url))) return
+  // if (window.XMLHttpRequest) var xhr = new XMLHttpRequest(); else var xhr = new ActiveXObject('MSXML2.XMLHTTP')
+  // xhr.open('GET', url, false) // 同步方式
+  // if (xhr.overrideMimeType) {
+  //   try {
+  //     xhr.responseType = 'arraybuffer'
+  //     var arrybuffer = true
+  //   } catch (err) {
+  //     xhr.overrideMimeType('text/plain; charset=x-user-defined')
+  //   }
+  // }
+  // xhr.send(null)
+  // var data = xhr.response || xhr.responseBody
+  var arrybuffer = true
   if (typeof Uint8Array !== 'undefined') {
     if (arrybuffer) var dataArray = new Uint8Array(data); else {
       var dataArray = new Uint8Array(data.length)
@@ -190,9 +191,9 @@ export const hdPrint = function (printerType, type, url, params, fileName, callb
   }
   // 针式预览和喷墨预览一样
   if (type == 'preview') {
-    params.type = 'INK'
-    params.printType = 'INK'
-    printerType = 'INK'
+    // params.type = 'INK'
+    // params.printType = 'INK'
+    // printerType = 'INK'
   }
   url(params).then(res => {
     console.log(res, type, printerType)
@@ -247,9 +248,13 @@ export const jGPrint = function (data, type, printerType) {
     LODOP.SET_SHOW_MODE('HIDE_PAPER_BOARD', 1) //  隐藏底图上有模拟走纸板的条纹线
     // LODOP.SET_PRINT_MODE('POS_BASEON_PAPER', true) // 可使输出以纸张边缘为基点
     if (type == 'preview') { //  预览
-      LODOP.ADD_PRINT_PDF(0, 0, '100%', '100%', data.data[data.data.length-1])
-      LODOP.SET_PRINT_PAGESIZE(3,2090,65,"");
-      LODOP.PREVIEW()
+      const reader = new FileReader()
+      reader.readAsDataURL(new Blob([data], { type: 'application/pdf' }))
+      reader.addEventListener('load', () => {
+        LODOP.ADD_PRINT_PDF(0, 0, '100%', '100%', reader.result.split('base64,')[1])
+        LODOP.SET_PRINT_PAGESIZE(3,2090,65,"");
+        LODOP.PREVIEW()
+      })
     } else if (type == 'print') { //  打印
       const dlen = data.data.length
       for(let i=0;i<dlen;i++){