|
@@ -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,
|