preload.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // preload.js
  2. const { contextBridge, ipcRenderer } = require('electron');
  3. // 暴露安全的 API 给渲染进程
  4. contextBridge.exposeInMainWorld('electronAPI', {
  5. // 系统退出相关操作
  6. exitApp: () => ipcRenderer.invoke('exit-close'),
  7. shutdownSystem: () => ipcRenderer.invoke('exit-shutdown'),
  8. // 日志功能(保留原有功能)
  9. writeLog: (level, msg) => ipcRenderer.invoke('write-log', level, msg)
  10. });
  11. // 暴露打印API
  12. contextBridge.exposeInMainWorld('electronPrint', {
  13. /**
  14. * 打印HTML内容(传统方式)
  15. * @param {Object} options - 打印选项
  16. * @param {string} options.html - 要打印的HTML内容
  17. * @param {string} options.orientation - 打印方向 ('portrait' | 'landscape')
  18. * @param {string} options.paperSize - 纸张尺寸 ('A3' | 'A4')
  19. * @param {boolean} options.silent - 是否静默打印
  20. * @param {Object} options.margins - 页边距
  21. */
  22. print: (options) => ipcRenderer.invoke('print-film', options),
  23. /**
  24. * 打印HTML内容(使用File System API)
  25. * @param {Object} options - 打印选项
  26. * @param {string} options.html - 要打印的HTML内容
  27. * @param {Array} options.imageDataList - 图片数据数组
  28. * @param {string} options.orientation - 打印方向 ('portrait' | 'landscape')
  29. * @param {string} options.paperSize - 纸张尺寸 ('A3' | 'A4')
  30. * @param {boolean} options.silent - 是否静默打印
  31. * @param {Object} options.margins - 页边距
  32. */
  33. printToFile: (options) => ipcRenderer.invoke('print-film-to-file', options),
  34. /**
  35. * 导出为PDF
  36. * @param {Object} options - 导出选项
  37. */
  38. printToPDF: (options) => ipcRenderer.invoke('print-to-pdf', options),
  39. });