certflow.services.printer.template_manager module

合格证模板管理器

加载和管理从 VBA 坐标转换而来的模板配置。 通过 cfg() 从主配置统一读取,不再独立加载 YAML 文件。

class certflow.services.printer.template_manager.FieldPosition[源代码]

基类:TypedDict

字段位置定义

x_mm: float
y_mm: float
width_mm: float
height_mm: float
font_size: int
align: str
class certflow.services.printer.template_manager.TemplateInfo[源代码]

基类:TypedDict

模板信息

name: str
variant: str
background: str
page_width: int
page_height: int
fields: dict[str, FieldPosition]
enabled: bool
class certflow.services.printer.template_manager.TemplateManager(config_path=None)[源代码]

基类:object

合格证模板管理器

负责加载和管理从 VBA 坐标转换而来的模板配置。 通过 cfg() 从主配置统一读取 template_coordinates 节点。

使用示例:

# 初始化管理器 tm = TemplateManager()

# 获取所有模板 templates = tm.get_all_templates()

# 获取指定模板 template = tm.get_template("russian")

# 获取模板中的字段坐标 pos = tm.get_field_position("russian", "product_name") print(f"产品名称位置: x={pos['x_mm']}mm, y={pos['y_mm']}mm")

参数:

config_path (str | None)

get_all_templates()[源代码]

获取所有模板

返回:

模板字典,key 为模板标识,value 为模板信息

返回类型:

dict[str, TemplateInfo]

get_template(template_key)[源代码]

获取指定模板

参数:

template_key (str) -- 模板键名(如 "russian", "full_chinese_1")

返回:

模板信息,不存在时返回 None

返回类型:

TemplateInfo | None

get_field_position(template_key, field_name)[源代码]

获取模板中指定字段的位置

参数:
  • template_key (str) -- 模板键名

  • field_name (str) -- 字段名(如 "product_name", "dn")

返回:

字段位置信息,不存在时返回 None

返回类型:

FieldPosition | None

get_field_x(template_key, field_name)[源代码]

获取字段的 X 坐标

参数:
  • template_key (str) -- 模板键名

  • field_name (str) -- 字段名

返回:

X 坐标(mm),不存在时返回 None

返回类型:

float | None

get_field_y(template_key, field_name)[源代码]

获取字段的 Y 坐标

参数:
  • template_key (str) -- 模板键名

  • field_name (str) -- 字段名

返回:

Y 坐标(mm),不存在时返回 None

返回类型:

float | None

get_field_width(template_key, field_name)[源代码]

获取字段的文本框宽度

参数:
  • template_key (str) -- 模板键名

  • field_name (str) -- 字段名

返回:

宽度(mm),不存在时返回 None

返回类型:

float | None

get_field_height(template_key, field_name)[源代码]

获取字段的文本框高度

参数:
  • template_key (str) -- 模板键名

  • field_name (str) -- 字段名

返回:

高度(mm),不存在时返回 None

返回类型:

float | None

get_field_font_size(template_key, field_name)[源代码]

获取字段的字号

参数:
  • template_key (str) -- 模板键名

  • field_name (str) -- 字段名

返回:

字号(pt),不存在时返回 None

返回类型:

int | None

get_field_align(template_key, field_name)[源代码]

获取字段的对齐方式

参数:
  • template_key (str) -- 模板键名

  • field_name (str) -- 字段名

返回:

对齐方式字符串,不存在时返回 None

返回类型:

str | None

get_background_path(template_key)[源代码]

获取模板的底板图片路径

参数:

template_key (str) -- 模板键名

返回:

图片路径字符串,不存在时返回 None

返回类型:

str | None

get_page_size(template_key)[源代码]

获取模板的页面尺寸

返回:

(width_mm, height_mm) 元组

参数:

template_key (str)

返回类型:

tuple[int, int]

list_templates()[源代码]

列出所有模板

返回:

(key, name, variant) 列表

返回类型:

list[tuple[str, str, str]]

list_enabled_templates()[源代码]

列出已启用的模板(coordinates.yaml 中 enabled: true),供 UI 下拉使用。

返回:

(key, name, variant) 列表,仅含 enabled 为真的模板。

返回类型:

list[tuple[str, str, str]]

print_template_info(template_key)[源代码]

打印模板信息(调试用)

参数:

template_key (str) -- 模板键名。

返回类型:

None

reload()[源代码]

重新加载模板配置

返回类型:

None

certflow.services.printer.template_manager.get_template_manager(config_path=None)[源代码]

获取模板管理器单例。

返回:

全局共享的模板管理器实例。

返回类型:

TemplateManager

参数:

config_path (str | None)