certflow.services.printer.template_field_formatter module¶
模板差异化字段格式化(docs/PRINT_BLUEPRINT.md §4)。
按模板语言族(全中文/中英文/全英文/俄英文)把原始字段值渲染为打印文本: - 全中文底板已预印 ≤℃ / mm·in / MPa·Lb → 只打数值;英制需 X 偏移。 - 中英文/全英文/俄英文底板无单位 → 自带单位。
field_display_formats 配置位于 config/imperial_rules.yaml``(该文件未被主配置
``!include,故此处直接加载;同文件的 pn_display_formats 此前为死配置,本类一并接管)。
format() 返回 (渲染文本, 英制 X 偏移 mm)。打印引擎对非零 x_offset 应将该字段
坐标右移;现已接入 ESC/P 引擎:PrintView._format_print_data 将偏移随数据以
_x_offsets 透传,PrinterService.print_by_template_config /
print_by_template 据此右移字段 X 坐标(蓝图 §4.2)。
- certflow.services.printer.template_field_formatter.family_of(key)[源代码]¶
由模板配置键或语言族串推导语言族(全中文/中英文/全英文/俄英文)。
单一真相来源:
print_view/certificate_preview_painter/scan_service均应收口到此函数,消除重复的族判定逻辑(蓝图 §9-3 相关清理)。
- certflow.services.printer.template_field_formatter.resolve_template_key(value)[源代码]¶
由模板语言族/标签/配置键解析
coordinates.yaml的模板键。用于队列打印按证书模板类型选取正确坐标源(取代硬编码 positions):
已是合法键 → 直接返回;
该语言族
enabled变体优先(如 全中文 → full_chinese_3);否则取该族首个变体;
兜底 full_chinese_3 → 首个键。
- class certflow.services.printer.template_field_formatter.TemplateFieldFormatter(formats=None)[源代码]¶
基类:
object按模板语言族渲染字段打印文本。
- format_pn(value, unit, family)[源代码]¶
公称压力格式化(打印/扫描/预览共用,
(value, unit)拆分自权威串pn_display)。与打印侧
format("pn", ...)同源;pn_display为权威输入(任意串),pn_value/pn_unit由其反向拆出。门限(中文可无单位、非中文必须带单位) 由output_guard.validate_pn_text把关,此处只负责「按模板语言族决定带不带单位」:空值 →
"";非标准单位(KPa 等,不在
{None, MPa, Lb})→ 原值f"{value}{unit}", 不丢单位、不做单位换算;MPa整数补一位小数(如32→32.0);英制
lb/Lb大小写不敏感,统一展示为Lb``(如 ``150Lb);全中文族:底板预印
MPa→ 仅返回数值(如25.0MPa→25.0); 但若单位为非MPa``(如英制磅级 ``Lb用中文合格证打印),为避免与预印MPa混淆,**保留单位**(如1500Lb→1500Lb);中英文/全英文/俄英文族:必须带单位(如
32.0MPa/150Lb)。