electron-egg electron-egg
首页
  • v4.x
  • v3.x
  • v2.x
插件
  • v4.x
  • v3.x
demo
支持
知识点
案例
交流
  • GitHub (opens new window)
  • Gitee (opens new window)
首页
  • v4.x
  • v3.x
  • v2.x
插件
  • v4.x
  • v3.x
demo
支持
知识点
案例
交流
  • GitHub (opens new window)
  • Gitee (opens new window)
❤️成为赞助商
  • 框架

  • 操作系统

  • 特效

  • 硬件

    • 打印机
    • 优惠券
    • 异常处理
    目录

    打印机

    外接硬件设备

    # 打印机设备

      // frontend/src/views/hardware/printer/Index.vue
      <script>
      import { ipcApiRoute } from '@/api/main'
      export default {
        data() {
          return {
            defaultDeviceName: '',
            printerList: [],
            views: [
              {
                type: 'html',
                content: '/public/html/view_example.html'
              },        
            ],
          };
        },
        mounted () {
          this.init();
        },  
        methods: {
          init () {
            // 避免重复监听,或者将 on 功能写到一个统一的地方,只加载一次
            this.$ipc.removeAllListeners(ipcApiRoute.printStatus);
            this.$ipc.on(ipcApiRoute.printStatus, (event, result) => {
              this.$message.info('打印中...');
            })
          },    
          getPrinter () {
            this.$ipc.invoke(ipcApiRoute.getPrinterList, {}).then(res => {
              this.printerList = res;
            }) 
          },
          doPrint (index) {
            const params = {
              view: this.views[index],
              deviceName: this.defaultDeviceName
            };
            this.$ipc.send(ipcApiRoute.print, params)
          },
          defaultDevice (item) {
            let desc = "";
            if (item.isDefault) {
              desc = "- 默认";
              this.defaultDeviceName = item.name;
            }
            return desc;
          } 
        }
      };
      </script> 
      
      // electron/controller/hardware.js
      /**
       * 获取打印机列表
       */
      getPrinterList () {
        //主线程获取打印机列表
        const list = Electron.mainWindow.webContents.getPrinters();
        return list;
      }  
      /**
       * 打印
       */
      print (args, event) {
        const { view, deviceName } = args;
        let content = null;
        if (view.type == 'html') {
          content = path.join('file://', Ps.getHomeDir(), view.content)
        } else {
          content = view.content;
        }
        const addonWindow = this.app.addon.window;
        let opt = {
          title: 'printer window',
          x: 10,
          y: 10,
          width: 980, 
          height: 650 
        }
        const name = 'window-printer';
        const printWindow = addonWindow.create(name, opt);
        printWindow.loadURL(content);
        printWindow.webContents.once('did-finish-load', () => {
          // 页面完全加载完成后,开始打印
          printWindow.webContents.print({
            silent: false, // 显示打印对话框
            printBackground: true,
            deviceName,
          }, (success, failureReason) => {
            const channel = 'controller.hardware.printStatus';
            event.reply(`${channel}`, { success, failureReason });
            printWindow.close();
          });
        });
        return true;
      }  
      
      // Make sure to add code blocks to your code group

      # 完整代码

      • github前端代码 (opens new window)
      • github主进程代码 (opens new window)
      • gitee前端代码 (opens new window)
      • gitee主进程代码 (opens new window)
      上次更新: 2025/06/06, 07:21:49
      视频播放器
      优惠券

      ← 视频播放器 优惠券→

      Theme by Vdoing | Copyright © 2023-2025 哆啦好梦 | 京ICP备15041380号-2
      • 跟随系统
      • 浅色模式
      • 深色模式
      • 阅读模式
      ×