POS小票打印输出的流程解释,顺便求助ESCPOS指令中的删除线
-
先贡献后求助。。。
POS小票打印输出的基本流程如下:
小票输出部分的定义在【addons/point_of_sale/static/src/xml/pos.xml】中的<t t-name="XmlReceipt">便签内,很容易读懂,但是同样一个文件,只有这个地方的定义和其他部分是不同的,因为这个部分是会输出给【addons/hw_escpos】进行解析后打印的,这个打印和你生成的PDF打印完全是不同的逻辑,生产环境下必须搞定POSBOX,用PDF这种方法打印太无法上台面,也不利于后期扩展和维护。
然后再解释一下这个地方的语法特别的地方,这里面不能自己乱用HTML标签,本来我想要加个下划线把原始未打折价格显示出来,这个一般来讲很简单嘛,加个<s>标签就搞定了,因为相同文件,其他地方的模板(主要是屏幕显示用和PDF打印用的部分)都是这么简单的解决的。但是结果我用了<s>标签后,小票机输出的时候直接忽略了<s>中的东东,经过测试是因为hw_escpos模块根本不认这个标签,直接过滤掉了,后来就去查了一下hw_escpos模块的具体定义,发现他接受的标签很少,像b,em,line,left,right...这些都是可以接受的,但我死活找不到设定删除线的方法,后来再仔细看了看,找到了下面这些ESCPOS的打印指令,之前研究posbox的时候接触过,所以基本看得明白:
------------------------------------------------
# Text format
TXT_NORMAL = '\x1b\x21\x00' # Normal text
TXT_2HEIGHT = '\x1b\x21\x10' # Double height text
TXT_2WIDTH = '\x1b\x21\x20' # Double width text
TXT_DOUBLE = '\x1b\x21\x30' # Double height & Width
TXT_UNDERL_OFF = '\x1b\x2d\x00' # Underline font OFF
TXT_UNDERL_ON = '\x1b\x2d\x01' # Underline font 1-dot ON
TXT_UNDERL2_ON = '\x1b\x2d\x02' # Underline font 2-dot ON
TXT_BOLD_OFF = '\x1b\x45\x00' # Bold font OFF
TXT_BOLD_ON = '\x1b\x45\x01' # Bold font ON
TXT_FONT_A = '\x1b\x4d\x00' # Font type A
TXT_FONT_B = '\x1b\x4d\x01' # Font type B
TXT_ALIGN_LT = '\x1b\x61\x00' # Left justification
TXT_ALIGN_CT = '\x1b\x61\x01' # Centering
TXT_ALIGN_RT = '\x1b\x61\x02' # Right justification
TXT_COLOR_BLACK = '\x1b\x72\x00' # Default Color
TXT_COLOR_RED = '\x1b\x72\x01' # Alternative Color ( Usually Red )
---------------------------------------------------
这里就很清楚了,他是怎么定义ESCPOS的原始指令集的,但是这里面没有找到删除线的定义,所以我就去查了一下ESCPOS的指令集,找到了删除线的定义:
ESC ! n
格式: 十六进制:1B 21 n
位0:设置打印字体(0:24x24中文 1:16x16中文)
位1:保留
位2:保留
位3:1:字体加粗
位4:1:双倍高度
位5:1:双倍宽度
位6:1:删除线
位7:1:下划线
终于找到这个该死的删除线了,以粗体为例,odoo中设定的是\x1b\x45\x01,
然并卵。。。16进制什么的完全不懂,求大神帮忙解读,我应该怎么设定这个删除线的指令。 -
今天上午逛官方社区,<br / https://www.odoo.com/forum/help-1/question/french-tutorial-module-creation-pos-modification-25396 br />发现有人写了个 pos相关的开发文档:
http://thierry-godin.developpez.com/openerp/tutorial-module-creation-pos-modification-english-version/#
您看看 有没有 有帮助的地方。