打印功能
功能特性
- ✅ 打印预览功能
- ✅ 支持静默打印
- ✅ 支持打印 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,
},
// ...
};