# 打印排版
>優聲雲打印機使用自有排版系統,不兼容其他打印排版指令
[TOC]
## 內置排版指令
>為了讓開發者更加方便的使用雲打印,我們在系統內定制了壹批常用的排版指令
1. 獨立標簽
>>`<N></N><MC></MC>`應當置於整個排版的前面
| 序號 |指令 |內容 | 說明|
| --- | --- | --- |--- |
| 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 | 語音提示 |`<MC>{n}</MC> ` |{n}為語音的標誌, 目前支持:4:您有新的訂單,5:您有新的美團外賣訂單,6:您有新的餓了麽外賣訂單,請註意查收,7:您有客戶退單,請及時處理(實際效果以打印機播報為準)|
***`<N></N><MC></MC>`應當置於整個排版的前面,註意當同時使用多個指令時,指令順序保持壹致***
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>
~~~
## 字符支持
* 常用漢字
* 標點符號
* 阿拉伯數字
* 英語字母
* 運算符號:+-×÷%
* 貨幣符號¥
* 其余字符提供有限支持,請測試確認無誤後再在生產環境使用
**不支持emoji表情符,請嚴格過濾菜品名稱、用戶備註等字段**
## 排版示例
* 美團外賣
```
<S2><C>#1美團外賣</C></S2>
<S1><C>*優聲雲(成都店)*</C></S1>
--------------------------------
<S2><C>[預訂單]</C></S2>
<S2><C>--在線支付--</C></S2>
<H2>送達時間:10-17 07:40</H2><RN><H2>備註:[用餐人數1人]; 多放辣 多放辣 多放辣</H2><RN>下單時間:10-17 06:51
<RN>訂單編號:10187153373368819<RN>********************************
<C>-----------1號口袋-----------</C></B1>
<H2><TR><TD>豆腐花(豆腐花(加酸菜))</TD><TD>×1</TD><TD>3</TD></TR>
<TR><TD>鮮肉小籠包(小籠包(加辣))</TD><TD>×1</TD><TD>7</TD></TR></H2>
<B1>--------------其他--------------</B1>
餐盒費: ¥1
<RN>配送費: ¥4
<RN>折扣: ¥1
<RN>滿10.0元減1.0元
<RN>********************************
原價:15
<RN> 總價:<S2>14</S2>
<RN>
<S2>故宮 (芒果網咖114號機)</S2>
<RN><S2>18333333333</S2>
<RN><S2>謝(女士)(門店新客戶)</S2><RN>
```
* 餓了麽
```
<S2><C>#1 餓了麽</C></S2><S1><C>優聲科技(成都店)</C></S1><S1><C>--在線支付--</C></S1><S2><C>[預訂單]</C></S2><H2>送達:10-17 11:30<RN></H2>=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*<RN>下單時間:10-17 09:01<RN>訂單編號:1227066340320969757<RN><H2><C>1號籃子</C><RN><TR><TD>脆筍臘肉飯</TD><TD>×1</TD><TD>21</TD></TR><TR><TD>冰紅茶</TD><TD>×1</TD><TD>6</TD></TR><C>其它費用</C><RN><TR><TD>餐盒</TD><TD>×1</TD><TD>2</TD></TR></H2>********************************<RN><H2>配送費:3</H2><RN><H2>小計:32<RN></H2><H2>折扣:-14<RN></H2>********************************<RN><H2>總價:18</H2><RN><S1>天安門17樓</S1><RN><H2>丁** 182****8888</H2><RN><H2>隱私小號:13264100992,88</H2><RN>
```