打印指令,又称打印控制命令。计算机通过打印控制语言,以软件命令的方法来控制打印机操作,解释执行打印数据,获得打印结果的。对于打印机所实现的复杂功能而言,打印控制语言是基础。它直接关系到打印输入质量的优劣。因为增强我们对打印机控制语言的了解,就可以更好地选择和使用打印机。
目前主流的打印机控制语言只要有三种:
ESC命令
集(普通打印机)PCL
命令集其它:CPCL
命令集(移动打印机), TSPL
命令集(标签打印机)
ESC命令集是针式打印机和票据打印领域的事实上的工业标准;PCL命令集是低挡激光打印机、喷墨机印机领域的工业标准;PS命令集则是高档排版领域占垄断地位的页面描述语言。
ESC命令集和PCL命令集是命令解释型的语言,与高级编程语言中的BASIC相似,对每一条命令打印机立即给予响应执行。控制方式简单、方便、快速,便不能描述复杂的页面。
HPGL向量图形命令集(用于PCL5)和PS命令集都是编译型的语言。与高级编程语言中的C相似,对数条命令组成的完整程序进行编译、解释、最后驱动打印。HPGL命令集与PS相比之下又具有一些命令解释型语文的特点,只有PS语文才是一种真正的编译型页面描述语言。但两者都能够以打印页面为单位,描述打印信息,即都可实现复杂图形和图象的打印输出。
使用ESC、PCL、PostScript的软件比例占全部软件的75%以上。由此可见,这三种打印控制命令语言对于打印应用程序设计,起到了举足轻重的作用。
对于上述打印机控制语言有了一个初步的认识以后,我们来对各种语言作一个较全面的介绍。
日本的EPSoN公司是生产计算机外部设备的者牌公司,在目前的打印机市场,尤其是针式打印机市场占有很大一部分份额。它所推行的ESC打印控制命令(EPSON StandardCode for Printer)已经成为针式打印机控制语言事实上的工业标准,ESC/POS打印命令集是ESC打印控制命令的简化版本,现在大多数票据打印都采用ESC/POS指令集。绝大多数打印机都有EPSON ESC的软件命令仿真功能,而且其它打印控制命令的格式和功能也都与ESC代码集类似。
由于早期的操作系统DOS与现在windows的结构不同,在打印机内部软件和应用软件之间没有由硬件厂商提供的打印驱动程序,必须由应用软件直接通过硬件接口来控制打印机,所以从ESC指令出现开始,它就是公开的,否则没有应用软件可以使用它,而除了标准的ESC指令外,每种型号的打印机其指令又不太一样,所以在DOS软件中,你可以看到每个应用软件都只是支持为数不多的几种常用打印机。
Esc指令在形式上分为两种格式,一种是文本方式控制码,一种是Escape转义序列码。文本方式控制码由一字节字符码表示,实现的是与打印机硬件操作有关的指令,Escape序列码由转义字符和参数字符或打印数据组成。
PCL语言是HP公司于70年代针对其激光打印机产品推出的一种打印机页面描述语言。PCL语言与ESC指令一样是开放的。
PCL语言最初也是为点阵打印机设计的,PCL3是第一个得到广泛应用的版本,但它只支持一些简单的打印任务。PCL4虽然还只能应用在个人打印机中,但增加了对图形打印的支持,但由于解释工作比较简单,PCL4比后期的PCL5和PCL6对打印控制器的要求要低很多。
到PCL4时,功能已大大增强,主要是支持可任意改变的字模(Scalabe Fort)和支持HP的绘图语言即HP GI—/2语言,后者使激光打印设备可作为绘图设备使用。
PCL5(PRINTER CONTROL LANGUAGE VERSION 5)是HP公司推出的一种打印控制语言,是一种解释性的命令语言,这与BASIC语言类似。打印机对每条接收到的命令,马上解释执行,而不用等待所有命令全部接收。与此相对的是编译型的语言(如C)。ADOBE公司的PostScript打印页描述语言等),强调语句的模块化和完整性,只有全部命令都接收到后进行编译连接,才能完成相应的功能。
1996年HP公司发布了PCL6,它更加灵活,是一个目标朝向的控制语言,使处理多图形的文件的速度大大加快,实现了更好的WYSIWYG,因此可以更好地处理Web页面。
PostScript是Adobe公司的产品,和Epson和HP不一样,ADOBE公司不是打印设备制造商,而是一个工具软件开发商,所以PostScript语言从它一诞生就有着与ESC和PLC完全不同的特性,更符合软件的设计思想,它是一种与设备无关的打印机语言,即在定义图像时可以根本不考虑输出设备的特性(如打印机的分辨率、纸张大小等),而且它对文本和图形实行同样的处理过程,这就给处理字体带来了极大的灵活性。
由于PostScript的设备无关特性,在输出到特定输出设备,譬如对分辨率、纸张大小、进纸盒进行选择时,PostScript通过打印机描述(PostScript Printer Description )文件来实行各种打印机的不同特性。PPD文件主要提供以下与打印机有关的特定信息: 默认/最高分辨率,是否支持半色调监控,用户设定的监控信息,页面大小定义,页面可打印区域,默认字体(通常为Courier),是否支持双面打印等等。
通过PS驱动程序,各种不同的应用软件将各自的数据转换成PostScript格式。从打印引擎的工作原理可知,打印机只能接受位图格式,当打印机控制器将PostScript转换成位图格式时,由于PostScript十分复杂,一般的打印控制器难以胜任,通常由打印机中专门的光栅图像处理器(Raster Image Processor)来完成这一转换过程。
由于使用PostScript打印机对打印控制器的要求都比较高,另外PostScript是Adobe公司的注册产品,打印机厂商在其产品中使用PostScript语言要支付Adobe公司一笔费用,就像PC厂商支付给Microsoft公司的操作系统费用一样,因此使用PostScript的打印机的成本要比使用其他语言和控制方式的打印机要高。因此目前也出现了一些PostScript仿真,像HP公司的一些激光打印机中使用的PostScript仿真,可以和Adobe公司的PostScript完全兼容,也无需再支付Adobe公司相应的费用。
PostScript语言是一种广泛应用于光栅设备的页描述语言。它能在设备无关的前提下,提供极强的正文与图形描述能力,例如可任意平移、旋转、缩放正文字符和以字符及任意封闭区域作为裁剪区的边界。由于PostScript的这些特点,加上性能优越、价格低廉的激光打印机的出现,特别是Apple Laser writer激光打印机在商业上的成功,使得PostScript已经成为高质量专业排版印刷领域”事实上”的工业标准。
PostScript语言的真正兴起是Adobe公司在1985年发表的PostScriptlevell。其丰富的图形功能,高质量的T叩e1字模以及对页面描述的设备无关性,使PostScr5pt语言被普遍接受并成为事实上的工业标准。各种流行的西文排版和图形软件,如Pagemaker,Veatura,Quake eXpess,CorelDraw等等,都支持PostScript。
在1990年底,Adobe公司推出的PostScriptlevel2,无论是在描述能力还是在描述效率上都更上一层楼,进一步巩固了PostScript语言作为标准页面描述语言的地位。而且,最近国际标准组织ISo的JTCl/SC24委员会已把PostScript语言推荐为开发图形正文标准的一个主要参考语言。
postscript语言之所以得到广泛的应用,是与它所具有的极强的处理图形正文的功翰分不开的。作为一种页描述语言(即PDL),Post3cript具有如下特点:
1)能够精确地描述各种复杂的图形、图象以及正义,可对它们进行平移、旋转、放缩答操作;而且它把正文作为图形来处理。
2)采用灵活的摸板/涂料式(Stencil/Paint)的图象映象模型。不仅适合于Ntml及向量笔划描述图形,而且适合于采用三次曲线轮廓来实现图形描述。这种模型的裁剪区域不仅可用矩形框,而且可用封闭的任意区域。
3)支持设备独立性。
4)它也是一种程序设计语言,具有后缀式的表达方法。由前言和文稿两部分组成程序结构,有13种简单及复合对象类型,其操作符的语义是动态的。
PostScr5pt语言是一种页面描述语言,打印的页面数据信息通过打印机内置的PostScript语言解释器完成,当解释器执行描述字16、图形和图象的命令时,它把高级的PostScript语言描述转换为特定输出设备(如打印机)上的低级光栅数据格式。Postscript语言有三分之一的操作符面向图形处理,其余的三分之二可用作一般的计算机程序设计语言。
一般说来,PCL语言比较适合一些普通的商务办公应用,而PostScript语言更加适合对图形和色彩准确度要求比较高的专业应用。
CPCL命令集文档地址:http://www.docin.com/p-2160105026.html
CPCL命令集SDK下载(这里以厦门汉印电子技术有限公司的 HM-Z3打印设备为案例):http://cn.hprt.com/XiaZai/HM-Z3
这里面包括了Android iOS Windos设备SDK和用户手册,编程手册
服务器接口JSON API控制设备打印格式
{
"config":{ //公共全局参数
"offset":6,
"h":200,
"v":200,
"height":200,
"qty":1
},
"data":[
{
"type":"barCode", //类型:条形码
"value":"0002080700999961702", //条形码编号
"orientation":"BARCODE", //默认是横向,不传为默认
"barCodeType":"128",
"height":0,
"x":20, //X坐标值 从左往右边
"y":20, //Y坐标值 从上往下
"align":"LEFT",
"codeTextFont":4, //条形码的下方字体字号
"codeTextSize":2 //条形码下方字体大小
},
{
"type":"text",
"value":"贴片电阻", //打印输入文本的内容
"height":200,
"x":20,
"y":20,
"align":"LEFT",
"textFont":4,
"textSize":2
}
]
}