certflow.services.printer package

Submodules

Module contents

LQ-635KII 打印机服务模块

专门为 EPSON LQ-635KII 24针点阵打印机设计 基于 ESC/P-K 命令集

class certflow.services.printer.LQ635KIICommand[源代码]

基类:object

LQ-635KII ESC/P-K 命令码常量

基于手册 P101 实际支持的命令

ESC = b'\x1b'
LF = b'\n'
FF = b'\x0c'
CR = b'\r'
BEL = b'\x07'
BS = b'\x08'
CAN = b'\x18'
DEL = b'\x7f'
INIT = b'\x1b@'
HOME = b'\x1b<'
DC1 = b'\x11'
DC3 = b'\x13'
LINE_SPACING_1_8 = b'\x1b0'
LINE_SPACING_1_6 = b'\x1b2'
LINE_SPACING_N_180 = b'\x1b3'
LINE_SPACING_N_60 = b'\x1bA'
LINE_SPACING_N_360 = b'\x1b+'
PAGE_LENGTH_INCH = b'\x1bC\x00'
PAGE_LENGTH_LINES = b'\x1bC'
PAGE_SKIP_PERF = b'\x1bN'
PAGE_SKIP_OFF = b'\x1bO'
LEFT_MARGIN = b'\x1bl'
RIGHT_MARGIN = b'\x1bQ'
ALIGN_LEFT = b'\x1ba\x00'
ALIGN_CENTER = b'\x1ba\x01'
ALIGN_RIGHT = b'\x1ba\x02'
ALIGN_JUSTIFY = b'\x1ba\x03'
HORIZONTAL_TAB = b'\t'
SET_HORIZONTAL_TABS = b'\x1bD'
ABSOLUTE_HORIZONTAL = b'\x1b$'
RELATIVE_HORIZONTAL = b'\x1b\\'
VERTICAL_TAB = b'\x0b'
SET_VERTICAL_TABS = b'\x1bB'
ABSOLUTE_VERTICAL = b'\x1b(V'
RELATIVE_VERTICAL = b'\x1b(v'
RELATIVE_VERTICAL_MOVE = b'\x1bJ'
REVERSE_VERTICAL_MOVE = b'\x1bT'
DRAFT_QUALITY = b'\x1bx\x00'
LETTER_QUALITY = b'\x1bx\x01'
PITCH_10CPI = b'\x1bP'
PITCH_12CPI = b'\x1bM'
PITCH_15CPI = b'\x1bg'
PROPORTIONAL_ON = b'\x1bp\x01'
PROPORTIONAL_OFF = b'\x1bp\x00'
CHARACTER_SPACE = b'\x1b '
CONDENSED_ON = b'\x0f'
CONDENSED_OFF = b'\x12'
DOUBLE_WIDTH_ON = b'\x1bW\x01'
DOUBLE_WIDTH_OFF = b'\x1bW\x00'
DOUBLE_HEIGHT_ON = b'\x1bw\x01'
DOUBLE_HEIGHT_OFF = b'\x1bw\x00'
FONT_ROMAN = b'\x1bk\x00'
FONT_SANS_SERIF = b'\x1bk\x01'
FONT_COURIER = b'\x1bk\x02'
FONT_PRESTIGE = b'\x1bk\x03'
FONT_SCRIPT = b'\x1bk\x04'
SUPERSCRIPT = b'\x1bS\x00'
SUBSCRIPT = b'\x1bS\x01'
SUPERSUB_OFF = b'\x1bT'
UNDERLINE_ON = b'\x1b-\x01'
UNDERLINE_OFF = b'\x1b-\x00'
ITALIC_ON = b'\x1b4'
ITALIC_OFF = b'\x1b5'
BOLD_ON = b'\x1bE'
BOLD_OFF = b'\x1bF'
DOUBLE_STRIKE_ON = b'\x1bG'
DOUBLE_STRIKE_OFF = b'\x1bH'
PRINT_MODE = b'\x1b!'
GRAPHICS_8PIN_SINGLE = b'\x1bK'
GRAPHICS_8PIN_DOUBLE = b'\x1bL'
GRAPHICS_8PIN_HS_DOUBLE = b'\x1bY'
GRAPHICS_8PIN_QUAD = b'\x1bZ'
GRAPHICS_24PIN_SINGLE = b'\x1b* '
GRAPHICS_24PIN_DOUBLE = b'\x1b*!'
GRAPHICS_24PIN_CRT = b'\x1b*&'
GRAPHICS_24PIN_TRIPLE = b"\x1b*'"
GRAPHICS_24PIN_HEX = b'\x1b*('
REDEFINE_GRAPHICS = b'\x1b?'
GRAPHICS_COMPRESS = b'\x1b(G'
GRAPHICS_DATA = b'\x1b(K'
CHARACTER_TABLE_ITALIC = b'\x1bt\x00'
CHARACTER_TABLE_GRAPHICS = b'\x1bt\x01'
CHARACTER_TABLE_DOWNLOAD = b'\x1bt\x02'
DOWNLOAD_CHAR = b'\x1b&'
COPY_ROM_TO_RAM = b'\x1b:\x00\x00\x00'
USE_DOWNLOAD = b'\x1b%'
SINGLE_LINE_WIDTH = b'\x0e'
SINGLE_LINE_WIDTH_OFF = b'\x14'
SET_VERTICAL_TABS_CHANNEL = b'\x1bb'
SELECT_VFU_CHANNEL = b'\x1b/'
TOP_MARGIN = b'\x1b(U'
PAGE_FORMAT = b'\x1b(c'
PAGE_LENGTH_EXT = b'\x1b(C'
class certflow.services.printer.Align(*values)[源代码]

基类:IntEnum

对齐方式

LEFT = 0
CENTER = 1
RIGHT = 2
JUSTIFY = 3
class certflow.services.printer.PrintQuality(*values)[源代码]

基类:IntEnum

打印品质

DRAFT = 0
LETTER = 1
class certflow.services.printer.Font(*values)[源代码]

基类:IntEnum

西文字体

ROMAN = 0
SANS_SERIF = 1
COURIER = 2
PRESTIGE = 3
SCRIPT = 4
class certflow.services.printer.PaperSize(width_mm, height_mm, name='')[源代码]

基类:object

纸张尺寸

参数:
width_mm

纸张宽度 (毫米)

height_mm

纸张高度 (毫米)

name

纸张名称

classmethod certificate()[源代码]

合格证纸张 (60x100mm)

返回:

60x100mm 合格证纸张尺寸

返回类型:

PaperSize

classmethod a4()[源代码]

A4 纸张 (210x297mm)

返回:

210x297mm A4 纸张尺寸

返回类型:

PaperSize

classmethod a5()[源代码]

A5 纸张 (148x210mm)

返回:

148x210mm A5 纸张尺寸

返回类型:

PaperSize

classmethod letter()[源代码]

Letter 纸张 (216x279mm)

返回:

215.9x279.4mm Letter 纸张尺寸

返回类型:

PaperSize

class certflow.services.printer.PrinterDPI(*values)[源代码]

基类:IntEnum

打印机分辨率

DPI_60 = 60
DPI_90 = 90
DPI_120 = 120
DPI_180 = 180
DPI_240 = 240
DPI_360 = 360
class certflow.services.printer.LQ635KIIPrinter(printer_name=None, calibration_x_offset_mm=13, y_offset_mm=0)[源代码]

基类:object

LQ-635KII 打印机控制类

专门为 EPSON LQ-635KII 24针打印机设计 使用 ESC/P-K 命令集,包含手册全部命令 定位策略: - X: 绝对定位(ESC $),自动应用 x_offset - Y: 相对移动(ESC J),自动应用 y_offset

使用示例:

# 1. 基础打印(推荐使用上下文管理器) with LQ635KIIPrinter("EPSON LQ-635KII") as printer:

printer.init() printer.set_line_spacing_1_6() printer.println("产品名称:高温高压阀门") printer.println("产品型号:J41H-64") printer.println("公称通径:DN150") printer.println("公称压力:PN64") printer.form_feed()

# 2. 精确定位打印(预印卡纸)- 使用推荐方法 with LQ635KIIPrinter() as printer:

printer.init() printer.set_quality(PrintQuality.LETTER) # 方法1:分别设置 X 和 Y(推荐) printer.set_absolute_x_mm(25) # X=25mm(绝对定位,自动应用 x_offset) printer.set_absolute_y_mm(30) # Y=30mm(相对移动实现,自动应用 y_offset) printer.print_text("DN150") printer.set_absolute_x_mm(25) printer.set_absolute_y_mm(38) printer.print_text("PN64") printer.form_feed()

# 2.1 或者使用合并方法 with LQ635KIIPrinter() as printer:

printer.init() printer.set_quality(PrintQuality.LETTER) printer.set_absolute_xy_mm(25, 30) # 同时设置 X,Y printer.print_text("DN150") printer.set_absolute_xy_mm(25, 38) printer.print_text("PN64") printer.form_feed()

# 3. 图形模式打印(任意字体/字号) with LQ635KIIPrinter() as printer:

printer.init() # 需要配合 PrinterService 使用 pass

# 4. 手动控制(不使用上下文管理器) printer = LQ635KIIPrinter("EPSON LQ-635KII") printer.open() printer.init() printer.set_bold(True) printer.println("重要提示") printer.set_bold(False) printer.flush() # 立即发送 printer.close()

参数:
  • printer_name (str | None)

  • calibration_x_offset_mm (float)

  • y_offset_mm (float)

open()[源代码]

打开打印机连接

如果已打开则跳过,支持链式调用。

返回:

返回自身实例,支持链式调用

返回类型:

LQ635KIIPrinter

close()[源代码]

关闭打印机连接

先刷新缓冲区将剩余数据发送到打印机,再关闭打印机句柄。

返回类型:

None

__enter__()[源代码]

上下文管理器入口,自动打开打印机

返回:

自身实例

返回类型:

LQ635KIIPrinter

__exit__(*args)[源代码]

上下文管理器出口,自动关闭打印机

参数:

args (object)

返回类型:

None

flush(job_name='CertFlow')[源代码]

强制将缓冲区数据发送到打印机

参数:

job_name (str) -- 打印作业名称

返回:

本次提交的 OS 打印作业 ID(见 _flush()

返回类型:

int | None

enable_raw_monitoring(output_dir='raw_logs', filter_cmds=None)[源代码]

启用原始数据监控

启用后,每次 _append 和 _flush 都会记录原始字节数据: - 控制台:实时显示 [RAW] 十六进制日志 - 文件:raw_full_YYYYMMDD_HHMMSS.prn 保存完整数据流

参数:
  • output_dir (str) -- 输出目录路径

  • filter_cmds (list[bytes] | None) -- 可选,仅记录包含这些字节序列的数据块。 例如 [b'x1b$', b'x1b(V'] 只记录定位命令相关数据。 为 None 时记录所有数据。

返回类型:

None

disable_raw_monitoring()[源代码]

禁用原始数据监控

返回类型:

None

carriage_return()[源代码]

回车 (CR)

将打印位置移动到当前行的最左侧。

返回类型:

None

backspace()[源代码]

退格 (BS)

打印位置向左移动一个字符位。

返回类型:

None

cancel_line()[源代码]

取消行缓冲区 (CAN)

清除当前行缓冲区中的所有数据。

返回类型:

None

delete_char()[源代码]

删除字符 (DEL)

删除上一个字符。

返回类型:

None

online()[源代码]

联机 (DC1)

将打印机设置为联机状态,准备接收数据。

返回类型:

None

offline()[源代码]

脱机 (DC3)

将打印机设置为脱机状态,停止接收数据。

返回类型:

None

init()[源代码]

初始化打印机 (ESC @)

清除缓冲区,恢复打印机到开机默认状态。 会先发送缓冲区中未完成的数据,避免丢失。

返回类型:

None

home()[源代码]

打印头归位 (ESC <)

将打印头移动到左侧起始位置。

返回类型:

None

beep()[源代码]

蜂鸣器鸣叫 (BEL)

发送蜂鸣命令,打印机发出提示音。

返回类型:

None

feed(lines=1)[源代码]

走纸 N 行 (LF)

参数:

lines (int) -- 行数,取值范围 1-255,超出自动截断

返回类型:

None

form_feed()[源代码]

换页 (FF)

将纸张推进到下一页顶部位置。

返回类型:

None

set_paper_size(paper)[源代码]

设置纸张尺寸

参数:

paper (PaperSize) -- 纸张尺寸对象

返回类型:

None

set_left_margin(col)[源代码]

设置左边界 (ESC l n)

参数:

col (int) -- 列数 (在10cpi下)

返回类型:

None

set_right_margin(col)[源代码]

设置右边界 (ESC Q n)

参数:

col (int) -- 列数 (在10cpi下)

返回类型:

None

set_line_spacing(n, unit='180')[源代码]

设置行间距

参数:
  • n (int) -- 间距值 (1-255)

  • unit (str) -- 单位 ("60", "180", "360")

返回类型:

None

set_line_spacing_1_6()[源代码]

设置行间距为 1/6 英寸(打印机默认值)

适用于常规文本打印。

返回类型:

None

set_line_spacing_1_8()[源代码]

设置行间距为 1/8 英寸

比默认间距更紧凑。

返回类型:

None

set_skip_perf(lines)[源代码]

设置页缝跳过 (ESC N n)

参数:

lines (int) -- 每页底部跳过的行数

返回类型:

None

cancel_skip_perf()[源代码]

取消页缝跳过 (ESC O)

取消之前设置的页缝跳过功能,恢复完整页面打印。

返回类型:

None

set_page_length_lines(lines)[源代码]

设置页长(按行) (ESC C n)

参数:

lines (int) -- 每页行数,取值范围 1-127

返回类型:

None

set_page_length_inch(inches)[源代码]

设置页长(按英寸) (ESC C NUL n)

参数:

inches (int) -- 每页长度,单位英寸,取值范围 1-22

返回类型:

None

set_align(align)[源代码]

设置对齐方式 (ESC a n)

参数:

align (Align) -- 对齐方式枚举值 (LEFT/CENTER/RIGHT/JUSTIFY)

返回类型:

None

left_align()[源代码]

设置左对齐

返回类型:

None

center()[源代码]

设置居中对齐

返回类型:

None

right_align()[源代码]

设置右对齐

返回类型:

None

justify()[源代码]

设置两端对齐

返回类型:

None

set_quality(quality)[源代码]

设置打印品质 (ESC x n)

参数:

quality (PrintQuality) -- 打印品质,DRAFT(草体/快速) 或 LETTER(文书体/高质量)

返回类型:

None

set_draft()[源代码]

设置为草体模式(快速打印)

返回类型:

None

set_letter()[源代码]

设置为文书体模式(高质量打印)

返回类型:

None

set_font(font)[源代码]

设置西文字体 (ESC k n)

参数:

font (Font) -- 字体枚举值 (ROMAN/SANS_SERIF/COURIER/PRESTIGE/SCRIPT)

返回类型:

None

set_pitch(cpi)[源代码]

设置字符间距 (CPI)

参数:

cpi (int) -- 每英寸字符数,支持 10/12/15

返回类型:

None

set_proportional(on=True)[源代码]

设置比例间距模式

比例模式下每个字符宽度不同(如 i 比 W 窄),关闭后恢复等宽模式。

参数:

on (bool) -- True 开启比例间距,False 关闭

返回类型:

None

set_character_space(n)[源代码]

设置字符间距 (ESC SP n)

参数:

n (int) -- 间距值,单位 n/120 英寸 (0-127)

返回类型:

None

set_double_width(on=True)[源代码]

倍宽打印 (ESC W)

参数:

on (bool) -- True 开启倍宽,False 恢复正常宽度

返回类型:

None

set_double_height(on=True)[源代码]

倍高打印 (ESC w)

参数:

on (bool) -- True 开启倍高,False 恢复正常高度

返回类型:

None

set_condensed(on=True)[源代码]

压缩打印模式(约 17.5 CPI) (SI / DC2)

参数:

on (bool) -- True 开启压缩模式,False 关闭

返回类型:

None

set_single_line_width(on=True)[源代码]

单行倍宽 (SO / DC4)

仅对当前行有效,换行后自动恢复。

参数:

on (bool) -- True 开启单行倍宽,False 关闭

返回类型:

None

set_bold(on=True)[源代码]

粗体效果 (ESC E / ESC F)

参数:

on (bool) -- True 开启粗体,False 关闭

返回类型:

None

set_italic(on=True)[源代码]

斜体效果 (ESC 4 / ESC 5)

参数:

on (bool) -- True 开启斜体,False 关闭

返回类型:

None

set_underline(on=True)[源代码]

下划线效果 (ESC - 1 / ESC - 0)

参数:

on (bool) -- True 开启下划线,False 关闭

返回类型:

None

set_double_strike(on=True)[源代码]

重叠打印效果(加深颜色) (ESC G / ESC H)

打印机在同一位置重复打印两次以加深颜色。

参数:

on (bool) -- True 开启重叠打印,False 关闭

返回类型:

None

set_superscript()[源代码]

设置为上标模式 (ESC S 0)

返回类型:

None

set_subscript()[源代码]

设置为下标模式 (ESC S 1)

返回类型:

None

cancel_super_sub()[源代码]

取消上标/下标模式 (ESC T)

返回类型:

None

set_print_mode(mode_byte)[源代码]

组合打印模式 (ESC ! n)

参数:

mode_byte (int) -- 模式字节,各bit含义: bit0: 10cpi (0) / 12cpi (1) bit1: 压缩打印 bit2: 粗体 bit3: 倍宽 bit4: 斜体 bit5: 下划线 bit6: 上标/下标 bit7: 倍高

返回类型:

None

set_absolute_x(x_60inch)[源代码]

绝对水平定位 (ESC $ nL nH)

参数:

x_60inch (int) -- 水平位置,单位 1/60 英寸

返回类型:

None

set_absolute_x_mm(x_mm)[源代码]

绝对水平定位(毫米单位)- 自动叠加打印机物理校准偏移

参数:

x_mm (float) -- 水平位置,单位毫米(模板/字段逻辑坐标,不含物理校准)

返回类型:

None

move_y_relative(dots)[源代码]

向下移动 (ESC J n) - 单位 1/180 英寸

参数:

dots (int)

返回类型:

None

move_y_mm(delta_mm)[源代码]

向下移动指定毫米(相对移动)

参数:

delta_mm (float)

返回类型:

None

set_absolute_y_mm(y_mm)[源代码]

绝对垂直定位(毫米单位)- 使用相对移动实现

由于 ESC ( V 无效,改用 ESC J 相对移动, 从当前位置移动到目标 Y 位置。

参数:

y_mm (float)

返回类型:

None

set_absolute_xy_mm(x_mm, y_mm)[源代码]

同时设置 X,Y 绝对位置(推荐方法)

参数:
  • x_mm (float) -- X 坐标(毫米)

  • y_mm (float) -- Y 坐标(毫米)

返回类型:

None

move_y_up(dots)[源代码]

向上移动 (ESC T n) - 单位 1/180 英寸

参数:

dots (int)

返回类型:

None

move_x_relative(dots)[源代码]

相对水平移动 (ESC nL nH) - 备用,一般用绝对定位 :param dots: 移动点数,单位 1/180 英寸 (正数右移,负数左移)

参数:

dots (int)

返回类型:

None

set_absolute_y(y_180inch)[源代码]

绝对垂直定位 (ESC ( V) - 已弃用,命令无效

参数:

y_180inch (int)

返回类型:

None

set_character_table(table)[源代码]

选择字符表 (ESC t n)

参数:

table (int) -- 0=斜体表, 1=图形表, 2=下载字符表

返回类型:

None

set_italic_table()[源代码]

选择斜体字符表

返回类型:

None

set_graphics_table()[源代码]

选择图形字符表

返回类型:

None

print_text(text)[源代码]

打印文本

LQ-635KII 自动识别中文字符,直接发送 GB2312/GB18030 编码即可。

参数:

text (str) -- 要打印的文本内容

返回类型:

None

println(text='')[源代码]

打印一行文本并换行

参数:

text (str) -- 要打印的文本内容,默认为空(仅换行)

返回类型:

None

print_line(text)[源代码]

打印一行文本并换行(println 的别名)

参数:

text (str) -- 要打印的文本内容

返回类型:

None

newline()[源代码]

发送换行命令 (LF)

返回类型:

None

print_graphics_8pin(data, width, mode='single')[源代码]

8针图形打印

参数:
  • data (bytes) -- 图形数据 (每列1字节)

  • width (int) -- 宽度 (列数)

  • mode (str) -- 模式,可选: - "single": 60 DPI - "double": 120 DPI - "hs_double": 120 DPI 高速 - "quad": 240 DPI

返回类型:

None

print_graphics_24pin(data, width, dpi=PrinterDPI.DPI_180)[源代码]

24针图形打印

参数:
  • data (bytes) -- 图形数据 (每列3字节)

  • width (int) -- 宽度 (列数)

  • dpi (PrinterDPI) -- 分辨率,可选 DPI_60/DPI_90/DPI_120/DPI_180/DPI_360

返回类型:

None

redefine_graphics(target, source)[源代码]

重新定义图形模式 (ESC ? s m)

将标准图形命令重映射到 ESC * 的某个模式。

参数:
  • target (bytes) -- 要重定义的命令 (如 b"K", b"L", b"Y", b"Z")

  • source (bytes) -- 源模式 (如 b" ", b"!", b"&", b"'", b"(")

返回类型:

None

set_horizontal_tabs(tabs)[源代码]

设置水平制表位 (ESC D)

参数:

tabs (list[int]) -- 制表位列位置列表,以0结尾

返回类型:

None

tab_horizontal()[源代码]

跳转到下一个水平制表位 (HT)

返回类型:

None

set_vertical_tabs(tabs)[源代码]

设置垂直制表位 (ESC B)

参数:

tabs (list[int]) -- 制表位行位置列表,以0结尾

返回类型:

None

tab_vertical()[源代码]

跳转到下一个垂直制表位 (VT)

返回类型:

None

set_vertical_tabs_channel(channel, tabs)[源代码]

设置垂直制表位通道 (ESC b c n1 n2...0)

参数:
  • channel (int) -- 通道号 (0-7)

  • tabs (list[int]) -- 制表位行位置列表

返回类型:

None

select_vfu_channel(channel)[源代码]

选择 VFU 通道 (ESC / c)

参数:

channel (int) -- 通道号 (0-7)

返回类型:

None

print_barcode(code, barcode_type=0)[源代码]

打印条码

注意:此功能需要打印机固件支持条码命令。

参数:
  • code (str) -- 条码内容

  • barcode_type (int) -- 条码类型编号 (需要打印机支持)

返回类型:

None

class certflow.services.printer.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