引言
本人从事打印机开发和打印驱动开发的相关工作,深感资料特别是中文资料的匮乏和不成系统,对新入门的从事该行业的人来说,门槛很高。在这里一方面是将开发中遇到的相关知识点整理出来,另一方面也能够促进自己的学习。打印相关的知识很多,这里分系列的写出来。主要分以下几个部分:

一、
概述。这一章节简单描述PCL语言的来源、演变,以及它的功能和目的。

二、
打印基础知识。这一章节介绍打印开发所需要的基础知识,专业术语等。

三、
PCL语言。这一章节介绍PCL语言的组成、命令格式等。

四、
PJL语言。这一章节介绍PJL语言的组成。

五、
PC打印驱动。这一章节介绍PC端打印驱动的流程、模型等。

六、
设备端打印驱动。这一章节简单介绍如何进行设备端打印驱动的开发。主要是USB gadget的驱动开发。

七、
打印文件解析。这一章节将具体解析打印驱动生成的发到打印机的文件。

八、
Ghostpdl介绍。这一章节主要介绍开源ghostpdl,以及它的功能、作用等。

九、
Ghostpdl编译和使用。这一章节讲述如何编译ghostpdl和使用ghostpdl软件,以及可以通过该软件进行哪些开发。

十、
CUPS。这一章节主要介绍CUPS的功能、作用及使用等。

一、
概述

PCL ,是Printer Command Language的简写,由HP公司创造的打印控制语言。目前已经成为业界标准了。它的目的是为各种打印设备提供一系列的经济且高效的方法,用来控制打印机的特性。

PCL命令嵌在打印任务数据流中,这样能减少数据传输和命令解析的开支。PCL格式和字体设计成能够很快转换成高质量、栅格化的打印图像。

PCL打印语言从PCL1 演变到PCL6。目前使用最广泛的是PCL5和PCL6,,包括PCL5e、PCL5c和PCL XL。PCL XL即为PCL 6增强版。关于PCL的详细文档可参见HP公司的《PCL 5e Technical Reference Manual》、《PCL XL Feature Reference Protocol Class 2.0》等等。这些资料都是十分权威和详实的。

PCL 6 类打印语言包含三种关键组成。一种是PCL 6 增强版,它是为视窗系统的图形界面优化的,如MicroSoft Windows,OS/2等;第二种是PCL 6 标准版,它提供向后兼容的能力,等价于 PCL 5e 或者 PCL 5c;第三种是字体综合。

PCL 6 增强版也称PCL XL,它以最少的命令和数据来描述打印页面,提高了在视窗系统下的打印效率。

PJL ,是Printer Job Language的简写,它提供了不同类别的打印控制。与PCL不同的是,PJL提供任务级别的控制,而PCL和HP-GL/2只控制打印页面上的打印点的位置。

二、
打印基础知识

  • 测量单位

在打印业界,有好几种测量单位,分别是英寸、厘米、点。英寸和厘米不用解释,1英寸=2.54厘米。点,即是物理上的意义,表示一个打印点。任何打印的图案都是有若干个不同排列组合的点构成。这个点的密度即称为DPI。DPI表示横向或纵向上一英寸上有多少个点。我们说的600DPI,则表示在一英寸上有600个点,如下图1所示。

图1


PCL坐标系

打印时需要进行定位,这就牵涉到坐标系。PCL的坐标系以左上角为起点,且分为物理页面和逻辑页面。逻辑页面小于物理页面。物理页面并不全是打印区域。如下图2所示。

图2


打印区域

打印区域是表示物理页面上的某一部分。物理页面、逻辑页面、默认图像框架和可打印区域定义见下图3。

 
图3 

图4

上表的单位是像素,即表示逻辑上的一点。如A4页面尺寸,在600DPI下,宽度为4676pixel,最大长度为7014pixel。一般,我们开发时就用像素这个单位。不同类型的纸张对应不同的尺寸。

跟我一起学PCL打印语言(一)的更多相关文章

  1. C语言学习书籍推荐《学通C语言的24堂课》下载

    下载地址:点我 编辑推荐 <学通C语言的24堂课>:用持续激励培养良好习惯以良好习惯铸就伟大梦想——致亲爱的读者朋友在开始学习<学通C语言的24堂课>的同时,强烈建议读者朋友同 ...

  2. 不懂指针就不要说自己学过C语言!

    不懂指针就不要说自己学过C语言! 1.掌握了指针,就掌握了C语言的精髓!计算机中绝大部分数据都放到内存中的,不同的数据放到不同的内存区域中. 内存角度没有数据类型,只有二进制:数据以字节(8位二进制) ...

  3. 学了C语言,如何利用cURL写一个程序验证某个网址的有效性?

    在<C程序设计伴侣>以及这几篇关于cURL的文章中,我们介绍了如何利用cURL写一个下载程序,从网络下载文件.可是当我们在用这个程序下载文件时,又遇到了新问题:如果这个网址是无效的,那么我 ...

  4. 学了C语言,如何写个程序计算出每个月的第一个星期一对应的日期

    在前面,我们分别利用泰勒公式和C标准库中的mktime()函数推算了某个特定日期所对应的星期几,刚做完这些,就又遇到了一个与日期相关的新任务: 老板把每个月例会的时间定在了每个月的第一个星期一,他让我 ...

  5. 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装

    在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...

  6. 学了 C 语言到底能做什么, 能从事什么工作?

    前言 经常有小伙伴问我,你是做C/C++的,那学C语言可以做什么呢?尤其是还在学校的同学,感觉自己学了很久,什么也做不了,一度怀疑自己是不是不适合程序员这个方向. 开始我都是直接说可以开发嵌入式啊,做 ...

  7. 教孩子学编程 python语言版PDF高清完整版免费下载|百度云盘|Python入门

    百度云盘:教孩子学编程 python语言版PDF高清完整版免费下载 提取码:mnma 内容简介 本书属于no starch的经典系列之一,英文版在美国受到读者欢迎.本书全彩印刷,寓教于乐,易于学习:读 ...

  8. 闭嘴,给你一个数!1分钟,学完C语言指针,不扎手只扎心的针!

    序言 指针是C语言学习者绕不过的一道坎,也是C语言学习者不得绕过的一道坎.辨别一个人C语言学的好赖就看他对指针的理解怎么样.指针内容也是工作面试经常问到的问题.本文将带你重新认识那个绊倒你的指针,以解 ...

  9. 为什么学完C语言觉得好像没学一般?

    不少同学从Hello world学到文件操作之后,回顾感觉会又不会? 学会了又感觉没学会?这种不踏实.模糊虚无的感觉?   原因在于编程不同于理论学科,你听懂和理解了理论就可以运用. 比如历史地理,看 ...

随机推荐

  1. 自由创造属于你的H5内容

    在这里,你可以自由创造属于你的H5内容  mark下 http://www.ih5.cn/

  2. js 判断url的?后参数是否包含某个字符串

    function GetQueryString(name){    var reg=eval("/"+name+"/g");   var r = window. ...

  3. C#制作ActiveX控件及部署升级(摘自网络)

    使用C#开发ActiveX控件 控件开发.制作CAB包.签名.部署 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序 ...

  4. 面向对象设计模式之Facade外观模式(结构型)

    动机:有些系统组件的客户和组件中各种复杂的子系统有了过多的的耦合,随着外部客户程序  和个子系统的演化,这种过多的耦合面临很多变化的挑战:如何简化外部客户程序和系统的交互接口?  如何将外部客户程序的 ...

  5. 如何用angularjs制作一个完整的表格之一__创建简单表格

    初步接手人生的第一个项目,需要用angularjs制作表格和实现各种功能,因此遇到了各种问题和以前不熟悉的知识点,在此记录下来,以供大家学习交流,解决方式可能并不完善或符合规范,如果大家有更好的方式欢 ...

  6. VISUAL STUDIO 2005连接MYSQL数据库

    // mysql.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <string.h> #include &l ...

  7. C++学习笔记5——类的继承

    简介: 通过继承联系在以前的类构成一种层次关系.通常在层次关系的根部有一个基类,其他类则直接或间接地从基类继承,这些继承得到的类称为类的派生类. 作用: 1.子类拥有父类的所有成员函数和成员变量. 2 ...

  8. hdu1003 Max Sum(经典dp )

      A - 最大子段和 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Descr ...

  9. oldboy第五天学习

    一.生成器 列表生成器 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> b = [] >>> for i in ...

  10. Swift互用性:采用Cocoa设计模式(Swift 2.0版)-b

    本页包含内容: 委托(Delegation) 错误处理(Error Handling) 键值观察(Key-Value Observing) Target-Action模式(Target-Action) ...