# 打印排版
> 中午云打印机使用自有排版系统,不兼容其他打印排版指令
* [打印排版](#_0)
* [内置排版指令](#_3)
* [自定义排版](#_43)
<span id="_3"></span>
## 内置排版指令
> 为了让开发者更加方便的使用云打印,我们在系统内定制了一批常用的排版指令
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>` `<TD>`{data1}`</TD><TD>`{data2}`</TD>` `</TR>` | {data}为两列内容 |
| 12 | 一行三列 | `<TR>` `<TD>`{data1}`</TD><TD>`{data2}`</TD><TD>`{data3}`</TD>` `</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>` `<TD>`{data1}`</TD><TD>`{data2}`</TD>` `</TR></S{n}>` | {n}为实际的倍数,支持1或2 {data}为两列内容 |
| 4 | 一行三列加大字体 | `<S{n}><TR>` `<TD>`{data1}`</TD><TD>`{data2}`</TD><TD>`{data3}`</TD>` `</TR></S{n}>` | {n}为实际的倍数,支持1或2 {data}为三列内容 |
**加粗标签可以和任意标签嵌套使用,使用时标签放在最外层**
**内容加高标签可以和任意标签嵌套使用,使用时标签放在最外层**
<span id="_43"></span>
## 自定义排版
> 排版的需求是个性化的,上述指令也无法完全满足开发者的需要
打印机排版参数
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>
~~~