最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Electron實現(xiàn)靜默打印小票的流程詳解

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

Electron實現(xiàn)靜默打印小票

靜默打印流程

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

//渲染進程 data是打印需要的數(shù)據(jù)
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)建完成后不需要顯示,測試時可以調(diào)用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數(shù)據(jù)
  if (printWindow) {
    printWindow!.webContents.send('data', obj)
  } else {
    createPrintWindow().then(() => {
      printWindow!.webContents.send('data', obj)
    })
  }
})

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

<!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里,也可以內(nèi)聯(lián)
    console.log('event, data: ', obj);
  //這里自由發(fā)揮
    document.body.innerHTML = '處理的數(shù)據(jù)'
  //通知主進程開始打印
    window.electron.ipcRenderer.send('startPrint')
  })
</script>
</html>

這個是我處理完的數(shù)據(jù)樣式,這個就是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實現(xiàn)靜默打印小票的流程詳解的詳細(xì)內(nèi)容,更多關(guān)于Electron靜默打印小票的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vant-ui組件庫中如何修改NavBar導(dǎo)航欄的樣式

    vant-ui組件庫中如何修改NavBar導(dǎo)航欄的樣式

    這篇文章主要介紹了vant-ui組件庫中如何修改NavBar導(dǎo)航欄的樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue強制刷新組件的方法示例

    vue強制刷新組件的方法示例

    這篇文章主要介紹了vue強制刷新組件的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Vue之ElementUI Form表單校驗

    Vue之ElementUI Form表單校驗

    這篇文章主要為大家詳細(xì)介紹了Vue之ElementUI Form表單校驗,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 關(guān)于找到任意組件實例的方法

    關(guān)于找到任意組件實例的方法

    這篇文章主要介紹了關(guān)于找到任意組件實例的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue 登錄滑動驗證實現(xiàn)代碼

    vue 登錄滑動驗證實現(xiàn)代碼

    這篇文章主要介紹了vue 登錄滑動驗證實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • Vue Camera組件功能及常用使用方法

    Vue Camera組件功能及常用使用方法

    Vue Camera組件是一個用于在Web應(yīng)用中使用攝像頭的Vue插件,它提供了一些常見的功能和方法來控制攝像頭和捕獲圖像或視頻數(shù)據(jù),本文給大家介紹Vue Camera組件的常見功能和使用方法,感興趣的朋友一起看看吧
    2023-11-11
  • el-tooltip配合el-button禁用時顯示提示的問題

    el-tooltip配合el-button禁用時顯示提示的問題

    這篇文章主要介紹了el-tooltip配合el-button禁用時顯示提示的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 深入理解vue.js雙向綁定的實現(xiàn)原理

    深入理解vue.js雙向綁定的實現(xiàn)原理

    vue.js是MVVM結(jié)構(gòu)的,同類的還有AngularJs;至于MVC、MVP、MVVM的比較網(wǎng)上已經(jīng)有很多了,這樣不再重復(fù)。這篇文章將給大家深入的介紹vue.js雙向綁定的實現(xiàn)原理,有需要的朋友們可以參考借鑒,下面跟著小編一起來看看吧。
    2016-12-12
  • vue Element UI 解決表格數(shù)據(jù)不更新問題及解決方案

    vue Element UI 解決表格數(shù)據(jù)不更新問題及解決方案

    在使用Vue和ElementUI開發(fā)后臺管理系統(tǒng)時,可能會遇到表格數(shù)據(jù)不更新的問題,這通常是因為Vue的響應(yīng)式系統(tǒng)未檢測到數(shù)據(jù)變化或數(shù)據(jù)更新后未正確觸發(fā)視圖的重新渲染,本文給大家介紹vue Element UI 解決表格數(shù)據(jù)不更新問題,感興趣的朋友一起看看吧
    2024-10-10
  • 為vue項目自動設(shè)置請求狀態(tài)的配置方法

    為vue項目自動設(shè)置請求狀態(tài)的配置方法

    這篇文章主要介紹了vue項目自動設(shè)置請求狀態(tài)的配置方法,本文通過示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06

最新評論

宁明县| 兴安县| 连城县| 禹城市| 湾仔区| 浏阳市| 晋中市| 白银市| 淅川县| 北海市| 贡嘎县| 黔南| 海阳市| 沁水县| 龙江县| 南昌县| 宁陵县| 龙州县| 崇州市| 毕节市| 鱼台县| 新余市| 曲周县| 玛多县| 武穴市| 三明市| 泰宁县| 南皮县| 眉山市| 汾阳市| 阿坝| 綦江县| 洛宁县| 龙胜| 商丘市| 视频| 孟津县| 福海县| 宁阳县| 米易县| 崇信县|