certflow.controllers.printer_controller module

打印机控制器

提供合格证打印的异步控制,封装 PrintWorker 线程和 PrinterController 信号机制。 通过 Qt 信号槽模式实现非阻塞打印,支持打印机切换和状态查询。 支持 PrintConfig 聚合配置透传。

Signals:

printer_changed: 打印机切换时发出,携带新打印机名称 status_changed: 打印状态变化时发出,携带状态描述文本 print_completed: 打印完成时发出,携带 (成功标志, 消息)

class certflow.controllers.printer_controller.PrintWorker(service, data, copies=1, config=None)[源代码]

基类:QThread

打印工作线程

将打印操作放在独立线程中执行,避免阻塞 UI 主线程。 支持两种模式: - 传入 PrintConfig:使用策略模式(ESC/P-K 或 GDI) - 不传 PrintConfig:回退到 PrinterService.print_certificate() 文本模式

Signals:

progress: 打印进度信号 (current, total) finished: 打印完成信号 (success: bool, message: str)

参数:
progress

打印进度信号 (current, total)

finished

打印完成信号 (success, message)

run()[源代码]

线程主执行方法(由 QThread.start() 触发)

返回类型:

None

staticMetaObject = PySide6.QtCore.QMetaObject("PrintWorker" inherits "QThread": Methods:   #12 type=Signal, signature=progress(int,int), parameters=int, int   #13 type=Signal, signature=finished(bool,QString), parameters=bool, QString )
class certflow.controllers.printer_controller.PrinterController[源代码]

基类:QObject

打印机控制器

管理打印机选择、打印任务调度和状态监控。 通过 Qt 信号槽实现 UI 与打印逻辑的解耦。 支持 PrintConfig 聚合配置透传。

_printer_name

当前选择的打印机名称,None 表示未初始化

_service

打印机服务实例(惰性创建,按名称缓存)

_print_worker

当前活动的打印工作线程

Signals:

printer_changed: 打印机名称变更信号 status_changed: 打印状态文本信号 print_completed: 打印完成信号 (success, message)

printer_changed

打印机切换信号,携带新打印机名称

status_changed

状态变更信号,携带状态描述文本

print_completed

bool, message: str)

Type:

打印完成信号 (success

property current_printer: str

当前打印机名称(惰性获取默认值)

返回:

打印机名称字符串,未获取到默认打印机时返回空字符串

返回类型:

str

set_printer(printer_name)[源代码]

设置当前打印机并发出变更信号

参数:

printer_name (str) -- 目标打印机名称

返回:

None

返回类型:

None

get_printers()[源代码]

获取系统可用打印机列表

返回:

打印机名称列表

返回类型:

list[str]

print_certificate(data, copies=1, config=None)[源代码]

异步打印合格证(在独立线程中执行)

参数:
  • data (dict[str, Any]) -- 打印数据字典,包含 product_name/product_model/dn/pn 等字段

  • copies (int) -- 打印份数,默认为 1

  • config (RuntimePrintConfig | None) -- RuntimePrintConfig 聚合配置,传入时使用策略模式打印; 为 None 时回退到文本模式

返回:

None

返回类型:

None

示例

>>> controller = PrinterController()
>>> controller.set_printer("HP LaserJet")
>>> controller.print_certificate(
...     {"product_name": "闸阀", "product_model": "Z41H-16C"},
...     copies=2,
... )
get_printer_status()[源代码]

检查当前打印机是否就绪

返回:

True 表示就绪可打印,False 表示离线/缺纸/错误/暂停

返回类型:

bool

static family_of(template_key)[源代码]

模板语言族判定(委托 TemplateFieldFormatter.family_of)。

参数:

template_key (str)

返回类型:

str

static get_field_formatter()[源代码]

获取字段格式化器(委托 TemplateFieldFormatter.get_field_formatter)。

返回类型:

Any

static get_issue_date_source()[源代码]

获取出厂日期源配置(委托 cert_numbering_policy.get_issue_date_source)。

返回类型:

str

static parse_product_code_meta(product_code)[源代码]

解析产品编码元信息(委托 cert_numbering_policy.parse_product_code_meta)。

参数:

product_code (str)

返回类型:

dict[str, Any]

staticMetaObject = PySide6.QtCore.QMetaObject("PrinterController" inherits "QObject": Methods:   #4 type=Signal, signature=printer_changed(QString), parameters=QString   #5 type=Signal, signature=status_changed(QString), parameters=QString   #6 type=Signal, signature=print_completed(bool,QString), parameters=bool, QString )
static validate_pn_text(family, pn_text)[源代码]

校验压力文本(委托 output_guard.validate_pn_text),返回错误信息或空串。

参数:
返回类型:

str

static run_guard(*args, **kwargs)[源代码]

运行输出护栏(委托 output_guard.run_guard),返回 (ok, updated)。

参数:
返回类型:

tuple[bool, dict[str, Any]]

static get_template_manager()[源代码]

获取模板管理器(委托 template_manager.get_template_manager)。

返回类型:

Any

static default_inspector_id(family)[源代码]

获取指定语言族的默认检验工号(委托 cert_log_service._default_inspector_id)。

参数:

family (str)

返回类型:

str