Skip to content

打印功能

功能特性

  • ✅ 打印预览功能
  • ✅ 支持静默打印
  • ✅ 支持打印 HTML 字符串
  • ✅ 支持打印 URL
  • ✅ 自定义纸张尺寸和方向
  • ✅ 打印进度和状态反馈

系统架构

打印模块经过重构,目前由以下几个核心组件组成:

核心服务 (PrintService)

位于 packages/main/src/services/print-service.js。 负责协调打印流程,管理打印窗口和预览窗口的生命周期。

窗口管理 (PrintWindowManager)

位于 packages/main/src/print/print-window-manager.js。 负责创建和销毁隐藏的打印渲染窗口以及预览窗口。

错误处理 (PrintErrorHandler)

位于 packages/main/src/print/print-error-handler.js。 统一处理打印过程中的异常情况,并返回标准化的错误信息。

流程设计

mermaid
sequenceDiagram
    participant Render as 渲染进程(业务)
    participant IPC as PrintHandler(PrintIPC)
    participant Service as PrintService
    participant WinManager as PrintWindowManager
    participant PrintWin as 隐藏打印窗口

    Render->>IPC: invoke('print-task', options)
    IPC->>Service: handlePrint(options)
    Service->>WinManager: createPrintWindow()
    WinManager-->>PrintWin: 创建(print.html)
    Service->>PrintWin: 加载内容(loadURL/loadContent)
    PrintWin-->>Service: dom-ready
    Service->>PrintWin: executeJavaScript(print)
    PrintWin-->>Service: print-finished
    Service-->>IPC: result
    IPC-->>Render: result

使用指南

基础打印

javascript
const result = await window.electron.ipcRenderer.invoke('print-task', {
  content: '<h1>Hello World</h1>',
  type: 'html', // 或 'url'
  silent: false, // 是否静默打印
  deviceName: '', // 指定打印机
});

打印配置

打印配置在 packages/main/src/config/print-config.js 中定义:

javascript
module.exports = {
  // 默认打印选项
  DEFAULT_OPTIONS: {
    silent: false,
    printBackground: true,
    color: true,
    margin: { marginType: 'default' },
    landscape: false,
    pagesPerSheet: 1,
    collate: false,
    copies: 1,
  },
  // ...
};

基于 MIT 许可发布