亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Electron實現靜默打印小票的流程詳解

 更新時間:2024年06月11日 09:28:53   作者:彷徨的耗子  
很多情況下程序中使用的打印都是用戶無感知的,并且想要靈活的控制打印內容,往往需要借助打印機給我們提供的api再進行開發(fā),這種開發(fā)方式非常繁瑣,并且開發(fā)難度較大,本文給大家介紹了Electron實現靜默打印小票的流程,感興趣的朋友可以參考下

Electron實現靜默打印小票

靜默打印流程

1.渲染進程通知主進程打印

//渲染進程 data是打印需要的數據
window.electron.ipcRenderer.send('handlePrint', data)

2.主進程接收消息,創(chuàng)建打印頁面

//main.ts
/* 打印頁面 */
let printWindow: BrowserWindow | undefined
/**
 * @Author: yaoyaolei
 * @Date: 2024-06-07 09:27:22
 * @LastEditors: yaoyaolei
 * @description: 創(chuàng)建打印頁面
 */
const createPrintWindow = () => {
  return new Promise<void>((resolve) => {
    printWindow = new BrowserWindow({
      ...BASE_WINDOW_CONFIG,
      title: 'printWindow',
      webPreferences: {
        preload: join(__dirname, '../preload/index.js'),
        sandbox: false,
        nodeIntegration: true,
        contextIsolation: false
      }
    })

    printWindow.on('ready-to-show', () => {
      //打印頁面創(chuàng)建完成后不需要顯示,測試時可以調用show查看頁面樣式(下面有我處理的樣式圖片)
      // printWindow?.show()
      resolve()
    })

    printWindow.webContents.setWindowOpenHandler((details: { url: string }) => {
      shell.openExternal(details.url)
      return { action: 'deny' }
    })

    if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
      printWindow.loadURL(`${process.env['ELECTRON_RENDERER_URL']}/print.html`)
    } else {
      printWindow.loadFile(join(__dirname, `../renderer/print.html`))
    }
  })
}

ipcMain.on('handlePrint', (_, obj) => {
   //主進程接受渲染進程消息,向打印頁面?zhèn)鬟f數據
  if (printWindow) {
    printWindow!.webContents.send('data', obj)
  } else {
    createPrintWindow().then(() => {
      printWindow!.webContents.send('data', obj)
    })
  }
})

3.打印頁面接收消息,拿到數據渲染頁面完成后通知主進程開始打印

<!doctype html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>打印</title>
  <style>
  </style>
</head>

<body>

</body>
<script>
  window.electron.ipcRenderer.on('data', (_, obj) => {
  //這里是接受的消息,處理完成后將html片段放在body里面完成后就可以開始打印了
  //樣式可以寫在style里,也可以內聯
    console.log('event, data: ', obj);
  //這里自由發(fā)揮
    document.body.innerHTML = '處理的數據'
  //通知主進程開始打印
    window.electron.ipcRenderer.send('startPrint')
  })
</script>
</html>

這個是我處理完的數據樣式,這個就是print.html

4.主進程接收消息開始打印,并且通知渲染進程打印狀態(tài)

ipcMain.on('startPrint', () => {
  printWindow!.webContents.print(
    {
      silent: true,
      margins: { marginType: 'none' }
    },
    (success) => {
      //通知渲染進程打印狀態(tài)
      if (success) {
        mainWindow.webContents.send('printStatus', 'success')
      } else {
        mainWindow.webContents.send('printStatus', 'error')
      }
    }
  )
})

完畢~

以上就是Electron實現靜默打印小票的流程詳解的詳細內容,更多關于Electron靜默打印小票的資料請關注腳本之家其它相關文章!

相關文章

  • 手拉手教你如何處理vue項目中的錯誤

    手拉手教你如何處理vue項目中的錯誤

    在項目開發(fā)中經常遇到各種報錯,每次總是通過這樣或那樣的辦法解決掉,這篇文章主要給大家介紹了關于如何處理vue項目中錯誤的相關資料,需要的朋友可以參考下
    2022-06-06
  • 基于Vue實現卡片無限滾動動畫

    基于Vue實現卡片無限滾動動畫

    這篇文章主要為大家詳細介紹了如何利用Vue制作出卡片無限滾動動畫,文中的示例代碼講解詳細,對我們學習有一定幫助,需要的可以參考一下
    2022-05-05
  • Vue計算屬性中reduce方法實現遍歷方式

    Vue計算屬性中reduce方法實現遍歷方式

    這篇文章主要介紹了Vue計算屬性中reduce方法實現遍歷方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue.js頁面加載執(zhí)行created,mounted的先后順序說明

    vue.js頁面加載執(zhí)行created,mounted的先后順序說明

    這篇文章主要介紹了vue.js頁面加載執(zhí)行created,mounted的先后順序說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue3項目中使用tinymce的方法

    vue3項目中使用tinymce的方法

    這篇文章主要介紹了vue3使用tinymce的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Vue $attrs & inheritAttr實現button禁用效果案例

    Vue $attrs & inheritAttr實現button禁用效果案例

    這篇文章主要介紹了Vue $attrs & inheritAttr實現button禁用效果案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 如何在vite初始化項目中安裝scss以及scss的使用

    如何在vite初始化項目中安裝scss以及scss的使用

    今天想要給vite項目,添加全局的scss變量文件引用,這樣我們在使用scss變量和函數的時候就不需要每個組件都取引用了,下面這篇文章主要給大家介紹了關于如何在vite初始化項目中安裝scss以及scss使用的相關資料,需要的朋友可以參考下
    2022-10-10
  • vue快速入門基礎知識教程

    vue快速入門基礎知識教程

    VUE是一套前端框架,免除了原生JavaScript中的DOM操作,簡化書寫。VUE基于MVVM(Model-View_ViewModel)思想,實現數據雙向綁定。Vue的核心庫只關注圖層.響應式數據綁定和組件化開發(fā)是其兩大特點。
    2023-01-01
  • 基于Vue2實現簡易的省市區(qū)縣三級聯動組件效果

    基于Vue2實現簡易的省市區(qū)縣三級聯動組件效果

    這是一個基于Vue2的簡易省市區(qū)縣三級聯動組件,可以控制只顯示省級或只顯示省市兩級,可設置默認值等。提供原始省市縣代碼和名稱數據,適用于各種有關城市區(qū)縣的應用。需要的朋友可以參考下
    2018-11-11
  • vue3父組件異步props傳值子組件接收不到值問題解決辦法

    vue3父組件異步props傳值子組件接收不到值問題解決辦法

    這篇文章主要給大家介紹了關于vue3父組件異步props傳值子組件接收不到值問題的解決辦法,需要的朋友可以參考下
    2024-01-01

最新評論