hardware.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. 'use strict';
  2. const { Controller } = require('ee-core');
  3. const path = require('path');
  4. const Ps = require('ee-core/ps');
  5. const Electron = require('ee-core/electron');
  6. /**
  7. * 硬件设备 - 功能demo
  8. * @class
  9. */
  10. class HardwareController extends Controller {
  11. constructor(ctx) {
  12. super(ctx);
  13. }
  14. /**
  15. * 获取打印机列表
  16. */
  17. getPrinterList () {
  18. //主线程获取打印机列表
  19. const list = Electron.mainWindow.webContents.getPrinters();
  20. return list;
  21. }
  22. /**
  23. * 打印
  24. */
  25. print (args, event) {
  26. const { view, deviceName } = args;
  27. let content = null;
  28. if (view.type == 'html') {
  29. content = path.join('file://', Ps.getHomeDir(), view.content)
  30. } else {
  31. content = view.content;
  32. }
  33. const addonWindow = this.app.addon.window;
  34. let opt = {
  35. title: 'printer window',
  36. x: 10,
  37. y: 10,
  38. width: 980,
  39. height: 650
  40. }
  41. const name = 'window-printer';
  42. const printWindow = addonWindow.create(name, opt);
  43. printWindow.loadURL(content);
  44. printWindow.webContents.once('did-finish-load', () => {
  45. // 页面完全加载完成后,开始打印
  46. printWindow.webContents.print({
  47. silent: false, // 显示打印对话框
  48. printBackground: true,
  49. deviceName,
  50. }, (success, failureReason) => {
  51. const channel = 'controller.hardware.printStatus';
  52. event.reply(`${channel}`, { success, failureReason });
  53. printWindow.close();
  54. });
  55. });
  56. return true;
  57. }
  58. }
  59. HardwareController.toString = () => '[class HardwareController]';
  60. module.exports = HardwareController;