Prechádzať zdrojové kódy

[ADD] emf support in windows

Gogs 6 rokov pred
rodič
commit
562c41707c
3 zmenil súbory, kde vykonal 42 pridanie a 4 odobranie
  1. 2 1
      package.json
  2. 33 2
      src/print.js
  3. 7 1
      yarn.lock

+ 2 - 1
package.json

@@ -1,7 +1,7 @@
 {
   "name": "printers-tray",
   "productName": "PrintersTray",
-  "version": "1.0.1",
+  "version": "1.0.2",
   "description": "Printers Tray",
   "main": "src/index.js",
   "scripts": {
@@ -51,6 +51,7 @@
     "electron-compile": "^6.4.3",
     "electron-devtools-installer": "^2.2.4",
     "express": "^4.16.3",
+    "imagemagick-native": "^1.9.3",
     "ini": "^1.3.5",
     "material-icons": "^0.2.3",
     "morgan": "^1.9.0",

+ 33 - 2
src/print.js

@@ -1,5 +1,6 @@
 import UUID from 'uuid/v4'
 import { printDirect, getPrinters, getDefaultPrinterName, getJob } from 'printer'
+import { convert } from 'imagemagick-native'
 
 const REQUEST_PRINTER_NAME = 'request_printer_name'
 const SHOW_PRINT_STATUS = 'show_print_status'
@@ -103,8 +104,38 @@ const doPrint = (socket, request) => {
         return
     }
 
-    const format = getFormat(mimeTypeRegex[0])
-    const buffer = Buffer.from(data, 'base64')
+    let format = getFormat(mimeTypeRegex[0])
+    let buffer = Buffer.from(data, 'base64')
+
+    if (process.platform === 'win32') {
+
+        if (format != 'PDF') {
+            socket.emit(SHOW_PRINT_STATUS, {
+                status: 'unknown'
+            })
+            return
+        }
+
+        const options = {
+            srcData: buffer,
+            srcFormat: format,
+            format: 'EMF'
+        }
+
+        format = options.format
+
+        try {
+            buffer = convert(options)
+        } catch (e) {
+            socket.emit(SHOW_PRINT_STATUS, {
+                status: 'error',
+                printer: request.printer,
+                cause: e
+            })
+
+            return
+        }
+    }
 
     printDirect({
         data: buffer,

+ 7 - 1
yarn.lock

@@ -2962,6 +2962,12 @@ image-size@^0.5.0, image-size@~0.5.0:
   version "0.5.5"
   resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
 
+imagemagick-native@^1.9.3:
+  version "1.9.3"
+  resolved "https://registry.yarnpkg.com/imagemagick-native/-/imagemagick-native-1.9.3.tgz#712f943d30c5daf6dc5d88198f4c9f1e6cb902df"
+  dependencies:
+    nan "2.x"
+
 imul@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9"
@@ -3702,7 +3708,7 @@ mz@^2.6.0:
     object-assign "^4.0.1"
     thenify-all "^1.0.0"
 
-nan@^2.3.2, nan@^2.4.0:
+nan@2.x, nan@^2.3.2, nan@^2.4.0:
   version "2.10.0"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"