1、LHx,y设置标签起始参考点坐标,不使用此命令时默认为0,0x:x轴坐标(0-9999),y:y轴坐标(0-9999)注:计量单位为点(dot)200dpi机器,8点=1mm 300dpi机器,12点=1mmLTx标签内容上下(Y轴)位置整体移动移动的数值,范围:-120 - +120点LSa标签内容左右(X轴)位置整体移动a:-9999 - +9999点FOx,y设置数据域(包括文字、条码、图形等)起始坐标(左上角)FDa定义打印数据字符,a:打印内容FS数据域分隔命令Af,o,h,w打印文字格式定义f:字体,默认为0,选择范围:A-Z,0-9(均为打印机内部字体,非TrueType字体)o
2、:文字方向,N=普通,R=旋转90度,I=旋转180度,B=旋转270度h:字符高度,范围:10-1500点w:字符宽度,范围:BYw,r,h设定条码默认参数条宽,缺省为2点,选择范围:1-10点r:条空比率,缺省为3.0,选择范围:2.0-3.0条码高度B3o,e,h,f,g打印39码条码方向e:Mod-43校验位,N=No(默认),Y=Yes条码高度,范围:1-9999点是否打印字符行,Y=Yes(默认),N=Nog:字符行位置,N:条码下方,Y:条码上方BCo,h,f,g,e,m打印128码UCC校验位,N=No(默认),Y=Yesm:模式,一般设为A(自动选择)或忽略不计PRp打印速率
3、p:速度2-8(或A-E)=2英寸/秒-8英寸/秒PQq打印数量q:总数量,选择范围:1-99999999GBw,h,t打印方框方框宽度,h:方框宽度,t:线宽DGd:o.x,t,w,DATA下载图形t:图形大小,计算方法为:x (点/毫米)(y(点/毫米)8x:图形宽度(毫米),y:图形高度(毫米)每行字节数,计算方法为x 8DATA:图形的ASCII16进制字符XGd:o.x,x,y调用图形进行打印d:存储图形的设备(Ram/FlashRam等)o.x:图形文件名,默认扩展名为GRFx轴缩放系数y:y轴缩放系数IDd:o.x删除图形以上命令中如果不填写某些参数,则会使用默认参数,速度控制,
4、位置调整等控制命令需置于标签内容设置命令之前,也可忽略这些控制命令,直接在打印机上调节。以上是一些ZPLII的主要打印用命令,一些较不常用的打印及控制命令未做说明,用户也最好不要轻易使用,以免造成机器软硬件设置的混乱。使用ZPLII编写好一个标签格式文件后,可使用DOS命令COPY将其发送至打印机端口进行打印,在编写系统软件时当然也可以采用这种方法,但其效率很低。下面以VB为例,介绍如何在VB中使用ZPLII打印标签。Private Sub CmdPrint_Click() Open LPT1 For Output As #1 Print #1, XALH30,30FO20,10ADFDEXA
5、MPLEFS FO20,60B3FDAAA001FS Print #1, PQ1,0,0,YXZ Close #1End Sub上述方法是将ZPLII命令直接发往LPT1并行打印端口。在编程中,中文字符的打印应用较多,而如果在程序中直接写入中文字符,打印出的结果会是乱码,针对这种情况,我们可以采用一个动态链接库,使用其中的函数将采用了各种TrueType字体的中文(包括任何语种的文字)转换成16进制码,使得打印机以图形打印方式打印出文字。具体实现方式如下,同样以VB为例。Private Declare Function GETFONTHEX Lib fnthex32.dll (ByVal ch
6、nstr$, ByVal fontname$, ByVal chnname$, ByVal orient%, ByVal height%, ByVal width%, ByVal bold%, ByVal italic%, ByVal hexbuf$) As IntegerPrivate Sub Command1_Click() Dim nCount As Integer Dim cBuf As String * 21000 nCount = GETFONTHEX(中文字符打印测试, 宋体chnstr01, 0, 30, 0, 1, 0, cBuf) Print #1, Mid(cBuf, 1
7、, nCount)PRBFSBY3,3.0FSFT30,190BEN,70,Y,NFD123456789012FSFO30,15XGchnstr01,1,1FSIDchnstr01FSVC示例Void function writeZebra()FILE * fhandle;fhandle=fopen(zebra.txt,w+);fputs(XAr,fhandle);LH30,30rFO20,10ADFDEXAMPLEFSrFO20,60B3FDAAA001FSrPQ1,0,0,YrXZrnfclose(fhandle);:CopyFile(,TRUE);return;DELPHI示例funct
8、ion GETFONTHEX(outStr,lfFaceName,outstrname:Pchar;lfOrientation,lfHeight,lfWidth,lfBold,lfItalic:Integer;hexBuf:PCHAR):HINST;stdcall;implementationfunction GETFONTHEX;external FNTHEX32.DLL;.procedure TForm1.BtnPrintClick(Sender: TObject);var lpt:textfile;cbuf:pchar;str:string;begin assignFile(lpt,LP
9、T1 rewrite(lpt); str:=测试文字;/以下调用转换函数将TrueType文字(中文)转换为图形并发送至打印机内存中,参数说明见附录=strAlloc(21000); GETFONTHEX(pchar(str),黑体,strtest,0,32,0,0,0,cbuf); writeln(lpt,cbuf); strdispose(cbuf); writeln(lpt,XAFO10,240A0N,60,60FDTESTFS); /使用打印机内部字体0打印文字“TEST”writeln(lpt,FO10,10XGstrtest,1,1FS/打印TrueType文字(中文)FO10,1
10、00BCN,100,Y,N,N,AFD1234567FS /打印128条码,内容为“1234567”,高度为100dotsPQ1/打印一张标签XZIDstrtestFS/清空打印机中的图像缓存 CloseFile(lpt);end;附:GETFONTHEX函数参数说明* 1) LPSTR outStr, / 输出字符串的内容 * 2) LPSTR lfFaceName, / TrueType字体名称* 3) LPSTR outstrname / 输出字符串的名称* 4) short int lfOrientation, / 旋转方向: 0,90,180,270* 5) short int lfHeight, / 字体高度 ,对于200dpi打印机,PC中的12号字在打印机中数值相当于32* 6) short int lfWidth, / 字体宽度 ,汉字一般设为0,为方块字* 7) short int lfBold, /字体加粗* 8) short int lfItalic, / 斜体 * 9) LPSTR hexBuf / 接收转换后图形的缓冲区