最近项目需求需要打印一个小票,百度了一下,都是那几篇文章,而且都是有固定API,可以判断切纸,长度的那种.实际中我这边便携式蓝牙打印机根本就没有API,只能通过写模板,其中涉及到CPCL的模板一些用法,记录一下.

如果需要仔细研究CPCL打印机方面,请google/百度搜索 斑马CPCL说明文档.

这次弄小票的打印模板,研究了下公司maven里面bluetoothlibrary包含的ZhongTong.txt打印面单的模板.

稍微有点经验,写出来,如果下次谁还需要弄这个,至少能有个简单的说明.

模板为txt文件格式,每个参数使用 空格间隔即可.


1.模板头部(文本的第一行)

! 0 200 200 1100 1

! => 开始标签

0 => 表示整体打印模板的偏移量

200 => 横向分辨率(每英寸的点数)(一般使用默认200即可)

200 => 竖向分辨率(同上)

1100 => 打印内容的最大高度(根据实际排版后确定,单位为mm)

1 => 每次打印的张数,默认1张/每次 就行.


2.模板宽度/宽度(一般为第二行起)

PAGE-WIDTH 580

PAGE-WIDTH => 没啥好说的

580 => 模板的宽度,单位为mm

如果是模板长度还可以额外设置

PAGE-HEIGHT 1100 或 PH 1100
待确认,现在打印失效,待确定是否为打印机驱动SDK的原因


3.画线

我只知道直线怎么画,虚线什么的不清楚.

举个栗子:

LINE 0 280 558 280 2

LINE => 表示为 线

0 => 起点的x坐标

280 => 起点的y坐标

558 => 终点的x坐标

280 => 终点的y坐标

2 => 线宽


模板的整体坐标是以打印纸的左上角为原点,x轴 左负右正,y轴 上负下正!!!


4.写字

TEXT 2 0 10 330 车牌号:

TEXT 2 0 100 330 [carNum]

TEXT => 表示为 文本

2 => 字体的字号(和斑马CPCL描述有出入,斑马CPCL内该行代表字体font,默认为FG,还有FN,FS,设置数字代表选取对应的字体组 )

0 => 字体的 size

10/100 => 该行文字的x坐标

330 => 该行文字的y坐标

车牌号/[carNum] => 文本内容

tips: 具体文字的x.y坐标确定后,打印,该坐标是按照一般左上角还是Android文字的左下角,待确定.

4.1 字体的旋转

一般为正常排列,可能会涉及到角度旋转,只支持默认,90°,180°,270°,方向是 逆时针.需要字体角度旋转的,使用 TEXT90/T90,TEXT180/T180及TEXT270/T270 就行

4.2 字体大小的调整.

按照公司maven库内bluetoothlibrary内包装的结果,字体大小设置分别代表的字体size为:

1 ==> 3

0 ==> 8

3,55 ==> 16

2,8 ==> 24

4 ==> 32

默认字体大小为24.

然后TEXT后第二位为对应的字号后的大小,默认为0就行.想再加大,++就行.

比如说想要设置 比常规字体大一号,且再加大,就是

TEXT 4 1 x y 例子

4.3 字体加粗的调整

如果需要设置字体加粗,在该行文本前面添加:

SETBOLD 1

SETBOLD => 表示后续的内容需要加粗

1 => 加粗程度,默认不需要加粗,为0

需要注意的是: 当设置好加粗后,后续不需要加粗,需要再设置一遍 SETBOLD 0 才行.


5.结束语

FORM

走到下一张纸,打印标签纸定位作用(连续纸不可用

这里说一下血的教训:
打印纸一般都属于热敏纸,按照使用途径分为连续纸和标签纸,连续纸就是哪种直接手撕,比如哪种超市小票,外卖的哪个小票那种.标签纸是自带隔断的,比如说快递面单,就是自带隔断的,通过FORM可以去寻找当前打印完成后的下一张纸.
不是标签纸,千万不要加,不是标签纸,千万不要加,不是标签纸,千万不要加.
重要的事情说3遍,
加了以后你会发现,emmm…
能给你出3~4倍长度的空白纸出来.

PRINT

这个是必须要加的,代表结束,可以开始打印了.


6.一个坐标还没有完全校调好的例子,提供用于参考

! 0 200 200 1100 1
PAGE-HEIGHT 1100
PAGE-WIDTH 580

LINE 0 80 558 80 2
LINE 0 280 558 280 2
LINE 0 480 558 480 2
LINE 0 780 558 780 2
LINE 0 980 558 980 2

TEXT 2 0 10 180 类型:
SETBOLD 1
TEXT 2 0 60 180 [type]
SETBOLD 2
TEXT 4 1 160 180 [typeValue]
SETBOLD 0
TEXT 2 0 290 180 线路:
TEXT 3 0 340 150 发
TEXT 3 0 340 210 到
SETBOLD 1
TEXT 2 0 375 150 [lastSite]
TEXT 2 0 375 210 [nextSite]

SETBOLD 0
TEXT 2 0 10 330 车牌号:
TEXT 2 0 10 430 总  重:
TEXT 2 0 290 330 货重:
TEXT 2 0 390 430  车重:
SETBOLD 1
TEXT 2 0 100 330 [carNum]
TEXT 2 0 100 430 [allWeigh]
TEXT 2 0 360 330 [goodsWeigh]
TEXT 2 0 460 430 [carWeigh]

SETBOLD 0
TEXT 2 0 10 530 称重/打印中心:
TEXT 2 0 10 575 称重/打印人员:
TEXT 2 0 10 630 称重时间:
TEXT 2 0 10 685 打印时间:
SETBOLD 1
TEXT 2 0 200 530 [weighSite]
TEXT 2 0 200 575 [weighPerson]
TEXT 2 0 120 630 [weighDate]
TEXT 2 0 120 685 [printDate]

SETBOLD 0
TEXT 2 0 10 870 注意事项:
SETBOLD 2
TEXT 4 1 10 930 [weighTips]

SETBOLD 0
TEXT 2 0 10 1060 装卸人员:
TEXT 2 0 290 1060 中心监督人员:

PRINT