certflow.services.printer.printer_service module

打印机业务服务 - 专为 LQ-635KII 设计

class certflow.services.printer.printer_service.PrinterService(printer_name=None)[源代码]

基类:object

LQ-635KII 打印机服务

提供合格证打印等高级功能

参数:

printer_name (str | None)

CERT_FIELDS = [('product_name', '产品名称:', 1), ('product_model', '产品型号:', 2), ('dn', '公称通径:', 3), ('pn', '公称压力:', 4), ('temperature', '工作温度:', 5), ('medium', '适用介质:', 6), ('check_standard', '检验标准:', 7), ('inspector_id', '检验工号:', 8), ('manufacture_date', '出厂日期:', 9), ('serial_number', '产品编号:', 10)]
get_printer()[源代码]

获取打印机实例

返回:

打印机控制实例

返回类型:

LQ635KIIPrinter

property last_os_job_id: int | None

最近一次打印提交的 OS 作业 ID(由 LQ635KIIPrinter._flush 捕获)。

用于打印队列的 OS 级取消 / 状态查询(BLUEPRINT §2.3 偏差 5 作业 ID 捕获链路)。每次新打印前由 _flush 覆盖,无 win32print(headless) 时为 None

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

简单文本模式打印(备用方案)

精确定位请使用 print_by_template_config(读 coordinates.yaml,单一坐标源) 使用文本模式打印,LQ-635KII 自动处理中文

参数:
  • data (dict[str, Any]) -- 打印数据

  • copies (int) -- 打印份数

返回:

是否成功

返回类型:

bool

print_by_template(template_key, data, copies=1, x_offsets=None)[源代码]

根据模板打印合格证

使用 coordinates.yaml 中定义的模板坐标进行精确定位打印。

参数:
  • template_key (str) -- 模板键名(如 "russian", "full_chinese_1")

  • data (dict[str, Any]) -- 打印数据字典

  • copies (int) -- 打印份数

  • x_offsets (dict[str, float] | None) -- 英制字段 X 偏移(mm),键为字段名(如 pn/dn), 非零时将该字段坐标右移,使数值落在预印单位标签(MPa/Lb)下。

返回:

是否成功

返回类型:

bool

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

根据 RuntimePrintConfig 打印合格证

使用 RuntimePrintConfig.template.fields 中定义的坐标进行精确定位打印。 相比 print_by_template(),不再依赖 TemplateManager,直接使用 RuntimePrintConfig。

参数:
  • config (RuntimePrintConfig) -- 聚合打印配置(包含 engine/template/layout 等)

  • data (dict[str, Any]) -- 打印数据字典

  • copies (int) -- 打印份数

  • x_offsets (dict[str, float] | None) -- 英制字段 X 偏移(mm),键为字段名(如 pn/dn), 非零时将该字段坐标右移,使数值落在预印单位标签(MPa/Lb)下。

返回:

是否成功

返回类型:

bool

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

渲染合格证为 ESC/P-K 原始字节流(不发送到打印机)。

print_by_template_config() 共用同一套命令构建逻辑,但刻意 不调用 open() / flush(),因此无需真实打印机、不会真正出纸, 可直接拿到「即将发送给打印机的完整字节」,供调试落盘 / 十六进制分析。

参数:
  • config (RuntimePrintConfig) -- RuntimePrintConfig 聚合配置(含 template.fields 坐标)。

  • data (dict[str, Any]) -- 打印数据字典(含 product_name/dn/pn/... 及 cert_number)。

  • copies (int) -- 份数,默认 1。

  • x_offsets (dict[str, float] | None) -- 英制字段 X 偏移(mm),键为字段名。

返回:

完整 ESC/P-K 命令字节流;配置无模板字段时返回空字节。

返回类型:

bytes

get_available_printers()[源代码]

获取可用打印机列表

返回:

本地和网络连接的所有打印机名称列表

返回类型:

list[str]

get_default_printer()[源代码]

获取系统默认打印机

返回:

默认打印机名称,失败时返回空字符串

返回类型:

str

is_printer_ready()[源代码]

检查打印机是否就绪

通过查询打印机状态位判断是否处于离线、缺纸、错误或暂停状态。

返回:

True 表示打印机就绪可用

返回类型:

bool