概述

打印指令,又称打印控制命令。计算机通过打印控制语言,以软件命令的方法来控制打印机操作,解释执行打印数据,获得打印结果的。对于打印机所实现的复杂功能而言,打印控制语言是基础。它直接关系到打印输入质量的优劣。因为增强我们对打印机控制语言的了解,就可以更好地选择和使用打印机。

目前主流的打印机控制语言只要有三种:

  • Epson公司的ESC命令集(普通打印机)
  • HP公司的PCL命令集
  • Adobe公司的PostScript(简称PS)命令集

其它:CPCL命令集(移动打印机), TSPL命令集(标签打印机)

  • 普通打印机都是ESC指令集
  • 标签打印机这种是TSPL指令集
  • 移动打印机CPCL打印语言
  • 还有其它打印机厂商自己开发的打印机语言许。多厂商都使用自己的打印机控制语言,如EPSON的ESC/page,佳能的CaPSYL,施乐的XES、JDL,IBM的IPDS,DEC的ANSI/Sixel等,它们都各具特点,

  ESC命令集是针式打印机和票据打印领域的事实上的工业标准;PCL命令集是低挡激光打印机、喷墨机印机领域的工业标准;PS命令集则是高档排版领域占垄断地位的页面描述语言。

  ESC命令集和PCL命令集是命令解释型的语言,与高级编程语言中的BASIC相似,对每一条命令打印机立即给予响应执行。控制方式简单、方便、快速,便不能描述复杂的页面。

  HPGL向量图形命令集(用于PCL5)和PS命令集都是编译型的语言。与高级编程语言中的C相似,对数条命令组成的完整程序进行编译、解释、最后驱动打印。HPGL命令集与PS相比之下又具有一些命令解释型语文的特点,只有PS语文才是一种真正的编译型页面描述语言。但两者都能够以打印页面为单位,描述打印信息,即都可实现复杂图形和图象的打印输出。

  使用ESC、PCL、PostScript的软件比例占全部软件的75%以上。由此可见,这三种打印控制命令语言对于打印应用程序设计,起到了举足轻重的作用。

对于上述打印机控制语言有了一个初步的认识以后,我们来对各种语言作一个较全面的介绍。

Epson公司的Esc命令集

日本的EPSoN公司是生产计算机外部设备的者牌公司,在目前的打印机市场,尤其是针式打印机市场占有很大一部分份额。它所推行的ESC打印控制命令(EPSON StandardCode for Printer)已经成为针式打印机控制语言事实上的工业标准,ESC/POS打印命令集是ESC打印控制命令的简化版本,现在大多数票据打印都采用ESC/POS指令集。绝大多数打印机都有EPSON ESC的软件命令仿真功能,而且其它打印控制命令的格式和功能也都与ESC代码集类似。

  由于早期的操作系统DOS与现在windows的结构不同,在打印机内部软件和应用软件之间没有由硬件厂商提供的打印驱动程序,必须由应用软件直接通过硬件接口来控制打印机,所以从ESC指令出现开始,它就是公开的,否则没有应用软件可以使用它,而除了标准的ESC指令外,每种型号的打印机其指令又不太一样,所以在DOS软件中,你可以看到每个应用软件都只是支持为数不多的几种常用打印机。
  
  Esc指令在形式上分为两种格式,一种是文本方式控制码,一种是Escape转义序列码。文本方式控制码由一字节字符码表示,实现的是与打印机硬件操作有关的指令,Escape序列码由转义字符和参数字符或打印数据组成。

HP公司的PCL语言

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页面。

Adobe公司的PostScript(简称PS)命令集

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语言更加适合对图形和色彩准确度要求比较高的专业应用。

开源代码

  • thermal_printer Java实现网络小票打印机自定义无驱打印
  • BluetoothPrint android 蓝牙打印机(ESC/POS 热敏打印机),打印菜单小票和图片,对蓝牙配对和连接打印功能进行了封装,让你超快实现蓝牙打印功能。
  • PrintUtils

CPCL命令集

SDK文档

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}]}

参考文献

  • ESC/POS协议打印机工具类(java)
  • EPSON ESC/POS指令
  • Java 实现 POS 打印机无驱打印
  • PCL(打印机指令语言)

打印机主流的指令类型(ESC命令集+CPCL命令集+TSPL命令集)...相关推荐

  1. 打印机主流的指令类型(ESC命令集+CPCL命令集+TSPL命令集)

    概述 打印指令,又称打印控制命令.计算机通过打印控制语言,以软件命令的方法来控制打印机操作,解释执行打印数据,获得打印结果的.对于打印机所实现的复杂功能而言,打印控制语言是基础.它直接关系到打印输入质 ...

  2. CMD命令行高级教程精选合编合集

    目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1.REM 和 :: 2.ECHO 和 @ 3.PAUSE 4.ERRORLEVEL 5.TITLE 6.COLOR 7.mode 配置系统设 ...

  3. CMD命令行高级教程精选合编合集 转

    CMD命令行高级教程精选合编合集 PKjason 发布于 2013/04/14 18:24 CMD命令行高级教程精选合编,需要的朋友可以参考下. 目录 第一章 批处理基础 第一节 常用批处理内部命令简 ...

  4. Git命令集十五——拉取命令

    2019独角兽企业重金招聘Python工程师标准>>> Git命令集十五--拉取命令 pull命令用于从其他仓库或本地分支拉取更改到当前分支. 1.git pull 将远程仓库的更改 ...

  5. Elasticsearch集群和索引常用命令

    https://www.cnblogs.com/pilihaotian/p/5846173.html REST API用途 ES提供了很多全面的API,大致可以分成如下几种: 1 检查集群.节点.索引 ...

  6. 【华为云技术分享】MongoDB经典故障系列五:sharding集群执行sh.stopBalancer()命令被卡住怎么办?

    [摘要] MongoDB sharding集群执行sh.stopBalancer()命令时被卡住怎么办?别慌,华为云数据库来给您支招,收下这份方案指南,让您分分钟远离被自建MongoDB数据库支配的恐 ...

  7. Git命令集十四——抓取命令

    2019独角兽企业重金招聘Python工程师标准>>> Git命令集十四--抓取命令 Git中提供的fetch命令用于将远端的更新抓取到本地仓库中. 1.git fetch < ...

  8. redis集群搭建及管理命令

    文章目录 1.集群的搭建 1.1 快速搭建集群 1) 首先,我们可以通过执行start命令来创建出6个节点,这6个节点的IP地址都为本机,而端口号则为30001-30006: 2)接着,我们需要使用c ...

  9. linux服务器查看节点,集群内核节点查看命令linux

    集群内核节点查看命令linux怎么做?根据CSDN博客作者zerowin的分享,查看Linux内核版本的命令可以使用以下两种方法: 第一种 cat /proc/version [root@S-Cent ...

  10. Linux手册大合集,收藏!Linux常用命令合集

    收藏!Linux常用命令合集 1. 帮助命令 1.1 man 命令名称,man 的意思是 manual,即手册,对于大多数命令都可以使用这个命令来查看其使用的方法. 1.2 help 命令名称 或者 ...

最新文章

  1. TIOBE 5 月编程语言排行榜:Python、C++竞争白热化,Objective-C已沦为小众语言
  2. wxWidgets:wxAuiTabArt类用法
  3. python同时满足两个条件_python算法-快速寻找满足条件的两个数
  4. 计算机处理信息的过程按先后顺序可表述为,信息加工理论按照信息处理的先后顺序将记忆区分为三个阶段系统;感觉记忆、()长时记忆。...
  5. [Web开发] 如何改变IE滚动条的颜色
  6. cgi、fast-cgi、php-pfm关系
  7. nginx 过滤请求URL参数及重定向
  8. 传智播客 java javaEE 20G全套视频教程(下载种子)
  9. 控制工程——传递函数与状态方程
  10. 爬取 百度logo(图片)
  11. java xss漏洞修复_全局存储型XSS漏洞修复
  12. 啦啦啦啦啦啦啦啦啦啦啦啦这是一篇分界线
  13. 【Ubuntu】虚拟机屏幕大小共享文件
  14. 组合优化- 均值方差、最大夏普、风险平价模型
  15. MapReduce学习之概述和设计构思
  16. pdfbox 去除签名 保留签名图片
  17. 计算属性computed里面的getter和setter
  18. 德国网上冲印公司Fotokasten计划进军中国市场
  19. 关于 Python 基础
  20. ucos II与ucos III的区别

热门文章

  1. HEX、RGB颜色表
  2. win11任务栏(注册表修改/软件)完全透明-全网最详细教程
  3. tdscdma的matlab仿真,基于MATLAB的TDSCDMA调制解调仿真
  4. 对数幅度谱图像matlab,fft2绘制图像的对数幅度谱,比较图像旋转、平移和缩放后的频谱...
  5. 上星远程控制实验(一)
  6. 服务器搬迁方案_定稿某信息中心机房搬迁方案实施实施方案计划_项目可行性方案(样例3)...
  7. 文本分类(2)-基于传统机器学习方法进行文本分类
  8. Closeness Centrality的计算方法
  9. java计算机毕业设计ssm+vue工商学院办公用品管理信息系统
  10. Linux基本操作和基础命令(Linux修改IP地址以及修改网卡地址)