# 打印排版
>中午云打印机使用自有排版系统,不兼容其他打印排版指令
[TOC]
## 内置排版指令
>为了让开发者更加方便的使用云打印,我们在系统内定制了一批常用的排版指令
1. 独立标签
>>`<SL></SL><SC></SC><SV></SV><MS></MS><N></N>`应当置于整个排版的前面,注意当同时使用多个指令时,应严格按照上述顺序
| 序号 |指令 |内容 | 说明|
| --- | --- | --- |--- |
| 1 | 多联次打印 |`<N>`{n}`</N> ` |{n}为实际的联数,支持`[1,9]`区间整数|
| 2 | 内容加高 |`<H{n}>`{data}`</H{n}> ` |{n}为实际的倍数,支持1或2,{data}为加高的内容,单行多行均有效 |
| 3 | 内容加宽 |`<W{n}>`{data}`</W{n}> ` |{n}为实际的倍数,支持1或2,{data}为加宽的内容,单行多行均有效 |
| 4 | 内容加大 |`<S{n}>`{data}`</S{n}> ` |{n}为实际的倍数,支持1或2,{data}为加大的内容,单行多行均有效 |
| 5 | 内容加粗 |`<B{n}>`{data}`</B{n}> ` |{n}为实际的倍数,支持1,{data}为加的内容,单行多行均有效 |
| 6 | 条形码 |`<BR>`{data}`</BR> ` |{data}为条码内容,13位长度,只支持数字,不足13位自动补0 |
| 7 | 二维码 |`<QR>`{data}`</QR> ` |{data}为二维码内容,长度不超过192字节,位置居中且不可修改 |
| 8 | 换行 |`<RN> ` |指令后的内容将无条件换行打印|
| 9 | 居中 |`<C>`{data}`</C> ` |{data}为居中内容|
| 10 | 居右 |`<R>`{data}`</R> ` |{data}为居右内容|
| 11 | 一行两列 |`<TR>`<br>`<TD>`{data1}`</TD><TD>`{data2}`</TD>`<br>`</TR> ` |{data}为两列内容|
| 12 | 一行三列 |`<TR>`<br>`<TD>`{data1}`</TD><TD>`{data2}`</TD><TD>`{data3}`</TD>`<br>`</TR> ` |{data}为三列内容|
| 13 | 制表符 |`<T> ` | 四字节对齐打印|
| 14 | 语音提示 |`<MS>{n}</MS> ` |{n}为语音的标志, 目前支持:4:短信提示音①,5:短信提示音②,6:您有新的订单,请注意查收,7:您有新的退单,请注意查收(实际效果以打印机播报为准)|
| 15 | 语音播报位置 |`<SL>{n}</SL> ` |{n}为语音播报位置的标志, 目前支持:1:打印订单前播报,2:打印订单后播放|
| 16 | 语音播报重复次数 |`<SC>{n}</SC> ` |{n}为语音播报次数, 支持`[1,9]`区间整数|
| 17 | 语音播报音量 |`<SV>{n}</SV>` |{n}为语音播报音量, 支持`[0,4]`区间整数|
***`<SL></SL><SC></SC><SV></SV><MS></MS><N></N>`应当置于整个排版的前面,注意当同时使用多个指令时,应严格按照上述顺序***
**`<SL></SL><SC></SC><SV></SV>`**近支持Z1-WIFI,Z1-GPRS,Z1-GPRS-WIFI
2. 嵌套标签
| 序号 |指令 |内容 | 说明|
| --- | --- | --- |--- |
| 1 | 居中加大字体 |`<S{n}><C>`{data}`</C></S{n}> ` |{n}为实际的倍数,支持1或2 {data}为居中内容|
| 2 | 居右加大字体 |`<S{n}><R>`{data}`</R></S{n}> ` |{n}为实际的倍数,支持1或2 {data}为居右内容|
| 3 | 一行两列加大字体 |`<S{n}><TR>`<br>`<TD>`{data1}`</TD><TD>`{data2}`</TD>`<br>`</TR></S{n}> ` | {n}为实际的倍数,支持1或2 {data}为两列内容|
| 4 | 一行三列加大字体 |`<S{n}><TR>`<br>`<TD>`{data1}`</TD><TD>`{data2}`</TD><TD>`{data3}`</TD>`<br>`</TR></S{n}> ` |{n}为实际的倍数,支持1或2 {data}为三列内容|
**加粗标签可以和任意标签嵌套使用,使用时标签放在最外层**
**内容加高标签可以和任意标签嵌套使用,使用时标签放在最外层**
## 自定义排版
> 排版的需求是个性化的,上述指令也无法完全满足开发者的需要
打印机排版参数
1. 58mm纸宽的打印机一行能容纳32个字节
2. 打印机使用gbk编码,默认大小下,汉字占用2个字节,英语字母占用1个字节,空格占用1个字节
3. 打印机字符默认居左
4. 打印机字体的宽高只能使用内置指令处理
5. 自定义只能改变字符的位置
在此基础之上,我们可以很容易自定义排版
下面以 不同字体大小下使"您好"居中 举例说明
1.默认字体大小:
目标字符占用四个字节,要使其居中 ,需要在目标字符前面添加空格
空格数 = (32(纸宽)-4(自身宽度))/2 = 14
~~~
您好<RN>
~~~
2.`<S1></S1>`大小下:
目标字符占用六个字节,要使其居中 ,需要在目标字符前面添加空格
空格数 = (32(纸宽)-6(自身宽度))/2 = 13
~~~
<S1>您好</S1><RN>
~~~
3.`<S2></S2>`大小下:
目标字符占用八个字节,要使其居中 ,需要在目标字符前面添加空格
空格数 = (32(纸宽)-8(自身宽度))/2 = 12
~~~
<S2>您好</S2><RN>
~~~