前言
隨着熱敏打印機的廣泛應用,需要打印的內容除了打印文字之外,還需要打印一維碼、二維碼、圖片等,如何快速有效的打印,如何對內容進行排版。開發者往往只會用廠家提供的SDK來進行開發,很多時候都是糊里糊塗的進行一些微調達到最終的效果。這是對打印機的原理不清楚造成的,廠家也沒有對此進行過多的解釋,所以針對這個問題,這篇文章將從原理上幫助開發者來理解打印機
在圖文排版之前需要把打印機的規格書看懂,了解打印機的基本知識
一、分辨率
在購買打印機的時候,一定要看打印機的分辨率是多少,常見的打印機分辨率有203dpi,300dpi,600dpi等。市場上的打印機以203dpi為主。
dpi 的英文是 dot per inch,也就是每英寸的點數,203dpi 也就是203點/inch,1inch=25.4mm,也就是說 203點/25.4mm, 換算下來就是 8 點/mm. 一定要記住每毫米8個點,每毫米8個點,每毫米8個點,重要的重復3遍
熱敏打印機都是以點為單位來進行排版計算的
二、打印寬度
打印機的有效打印寬度和紙張寬度是不一樣的。常見的小票機規格書上描述的寬度如 58mm、80mm等。 要看清楚這是紙寬,不是打印寬度,如果規格書上打印寬度寫的58mm、80mm等,那一定是規格書寫錯了。 記住這幾個值是紙寬,紙寬,紙寬。 前面規格書上寫的介質寬幅和紙張寬度是一個意思,介質就是打印材質的意思。
紙張寬度=打印寬度+左右邊距
紙張寬度 | 有效打印寬度 | 頁邊距 |
58mm | 48mm | 5mm |
80mm | 72mm | 4mm |
對應前面學的分辨率知識,如果機器是203dpi,那么對應的有效打印點數就是
有效打印寬度 | 有效打印點數 |
48mm | 384點(48*8) |
72mm | 576點(72*8) |
熱敏打印機都是以點為單位來進行排版計算的,所以記住58mm打印機對應的每行有效打印點數是384點,80mm打印機對應有效點數為576點。
三、字體
我們看到規格書上寫的字體種類分為3種,FontA 12*24點,FontB 9*17點,漢字24*24點。這是什么意思呢?
一般描述字體大小時,是按照 寬*高點來描述的,也就是 FontA 寬12點,高24點;FontB 寬9點,高17點;漢字 寬24點,高24點。
注意一般小票打印機使用的是點陣字體,也是等寬字體, 和我們看到的word上的一些矢量字體是不同的。有些矢量字體的 w和l寬度占用的空間寬度是不一樣的。 而一般小票打印機上的 w和l占用的空間寬度是一樣的。 這個你們可以實際打印看一下。 小票機一般是用的等寬字體.
四、打印指令
打印機的指令,也就是打印機的通訊協議。是上位機控制打印機操作的命令。常見的指令有ESC/POS,TSPL、ZPL、CPCL。 這些協議之所以通用,是因為規定這些指令的公司強勢,哪家公司強勢、產品普及率高、指令就用的更廣泛。 不同的通信協議,控制打印機的語言和通訊格式會有很大不一樣。 但是打印的本質是其實還是打印文字、圖片、條碼。所以不管指令怎么變,都是圍繞打印的基本功能來描述。
五、小試牛刀
根據前面介紹的內容,我們其實可以知道。對於小票打印機而言,一個漢字等於2個字符的寬度。
58mm的打印機,一行可以打印16個漢字,32個FontA,42個FontB
80mm的打印機,一行可以打印24個漢字,48個FontA,64個FontB
不知道怎么計算的可以留言
總結
本文先介紹了打印機的基本知識,掌握了基本知識后,后面在針對具體的每種通信協議怎么控制排版再做詳細的介紹