certflow.services.printer.print_strategy module

打印策略接口 - 支持 GDI 和 ESC/P-K 切换

允许通过 PrintConfig 配置切换打印引擎,业务层无需修改代码。

class certflow.services.printer.print_strategy.PrintStrategy(*args, **kwargs)[源代码]

基类:Protocol

打印策略协议

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

打印合格证

参数:
返回类型:

bool

class certflow.services.printer.print_strategy.GDIPrintStrategy(printer_name='')[源代码]

基类:object

GDI 打印策略(原有实现)

使用 win32ui GDI 进行精确坐标打印,适用于预印卡纸。

参数:

printer_name (str)

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

调用原有 GDI 打印逻辑

参数:
返回类型:

bool

property last_os_job_id: int | None

最近一次 GDI 打印提交的 OS 作业 ID(由 CertPrintEngine 捕获)。

class certflow.services.printer.print_strategy.ESCPPrintStrategy(printer_name='')[源代码]

基类:object

ESC/P-K 打印策略(新驱动)

使用 ESC/P-K 命令直接控制 LQ-635KII 打印机, 坐标从 PrintConfig.template.fields 获取。

参数:

printer_name (str)

property last_os_job_id: int | None

最近一次 ESC/P-K 打印提交的 OS 作业 ID(委托 PrinterService)。

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

使用 RuntimePrintConfig 驱动的精确定位打印。

队列路径(config=None)在此构建 RuntimePrintConfig:读 coordinates.yaml 逐字段坐标 + print_layout 用户覆盖(见 print_config.from_template), 使实打与预览/配置同源,不再使用硬编码 ``positions``(蓝图 §13 D1/D3 修复)。

参数:
返回类型:

bool

class certflow.services.printer.print_strategy.PrintStrategyFactory[源代码]

基类:object

打印策略工厂

根据配置返回对应的打印策略实例。

static create(engine='escp', printer_name='')[源代码]

创建打印策略

参数:
  • engine (str) -- 引擎类型 ("gdi" 或 "escp")

  • printer_name (str) -- 打印机名称,为空则使用默认打印机

返回:

打印策略实例

返回类型:

PrintStrategy

static from_config(printer_name='', config=None)[源代码]

从 RuntimePrintConfig 或 config.yaml 读取引擎类型并创建策略

参数:
  • printer_name (str) -- 打印机名称,为空则使用默认打印机

  • config (RuntimePrintConfig | None) -- RuntimePrintConfig 实例,优先使用;为 None 时回退到 config.yaml

返回:

打印策略实例

返回类型:

PrintStrategy