certflow.services.printer.lq635kii_printer module

LQ-635KII 打印机底层驱动

基于 ESC/P-K 命令集,包含手册 P101 所有命令及补充功能

定位策略: - X 轴:绝对定位 ESC $(有效) - Y 轴:相对移动 ESC J(有效),绝对定位 ESC ( V 无效

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