跟我一起学PCL打印语言(一)
引言
本人从事打印机开发和打印驱动开发的相关工作,深感资料特别是中文资料的匮乏和不成系统,对新入门的从事该行业的人来说,门槛很高。在这里一方面是将开发中遇到的相关知识点整理出来,另一方面也能够促进自己的学习。打印相关的知识很多,这里分系列的写出来。主要分以下几个部分:
一、
概述。这一章节简单描述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。
上表的单位是像素,即表示逻辑上的一点。如A4页面尺寸,在600DPI下,宽度为4676pixel,最大长度为7014pixel。一般,我们开发时就用像素这个单位。不同类型的纸张对应不同的尺寸。
跟我一起学PCL打印语言(一)的更多相关文章
- C语言学习书籍推荐《学通C语言的24堂课》下载
下载地址:点我 编辑推荐 <学通C语言的24堂课>:用持续激励培养良好习惯以良好习惯铸就伟大梦想——致亲爱的读者朋友在开始学习<学通C语言的24堂课>的同时,强烈建议读者朋友同 ...
- 不懂指针就不要说自己学过C语言!
不懂指针就不要说自己学过C语言! 1.掌握了指针,就掌握了C语言的精髓!计算机中绝大部分数据都放到内存中的,不同的数据放到不同的内存区域中. 内存角度没有数据类型,只有二进制:数据以字节(8位二进制) ...
- 学了C语言,如何利用cURL写一个程序验证某个网址的有效性?
在<C程序设计伴侣>以及这几篇关于cURL的文章中,我们介绍了如何利用cURL写一个下载程序,从网络下载文件.可是当我们在用这个程序下载文件时,又遇到了新问题:如果这个网址是无效的,那么我 ...
- 学了C语言,如何写个程序计算出每个月的第一个星期一对应的日期
在前面,我们分别利用泰勒公式和C标准库中的mktime()函数推算了某个特定日期所对应的星期几,刚做完这些,就又遇到了一个与日期相关的新任务: 老板把每个月例会的时间定在了每个月的第一个星期一,他让我 ...
- 学了C语言,如何利用CURL写一个下载程序?—用nmake编译CURL并安装
在这一系列的前一篇文章学了C语言,如何为下载狂人写一个磁盘剩余容量监控程序?中,我们为下载狂人写了一个程序来监视磁盘的剩余容量,防止下载的东西撑爆了硬盘.可是,这两天,他又抱怨他的下载程序不好用,让我 ...
- 学了 C 语言到底能做什么, 能从事什么工作?
前言 经常有小伙伴问我,你是做C/C++的,那学C语言可以做什么呢?尤其是还在学校的同学,感觉自己学了很久,什么也做不了,一度怀疑自己是不是不适合程序员这个方向. 开始我都是直接说可以开发嵌入式啊,做 ...
- 教孩子学编程 python语言版PDF高清完整版免费下载|百度云盘|Python入门
百度云盘:教孩子学编程 python语言版PDF高清完整版免费下载 提取码:mnma 内容简介 本书属于no starch的经典系列之一,英文版在美国受到读者欢迎.本书全彩印刷,寓教于乐,易于学习:读 ...
- 闭嘴,给你一个数!1分钟,学完C语言指针,不扎手只扎心的针!
序言 指针是C语言学习者绕不过的一道坎,也是C语言学习者不得绕过的一道坎.辨别一个人C语言学的好赖就看他对指针的理解怎么样.指针内容也是工作面试经常问到的问题.本文将带你重新认识那个绊倒你的指针,以解 ...
- 为什么学完C语言觉得好像没学一般?
不少同学从Hello world学到文件操作之后,回顾感觉会又不会? 学会了又感觉没学会?这种不踏实.模糊虚无的感觉? 原因在于编程不同于理论学科,你听懂和理解了理论就可以运用. 比如历史地理,看 ...
随机推荐
- JFrome 登陆/注册/回显无数据库连接小程序
当离开RCP插件区重新回顾一下JFrame窗口程序的标签.页面间的跳转. 完成一个登陆.注册界面.(界面完成后练习输入输出流,将前台的注册信息保存到一个文件夹下的.txt文件中) 首先向通过JFram ...
- RSA加密算法正确性证明
RSA加密算法是利用大整数分解耗时非常大来保证加密算法不被破译. 密钥的计算过程为:首先选择两个质数p和q,令n=p*q. 令k为n的欧拉函数,k=ϕ(n)=(p−1)(q−1) 选择任意整数a,保证 ...
- Mysql 应该选择什么引擎
对于如何选择存储引擎,可以简答的归纳为一句话:“除非需要用到某些INNODB 不具备的特性,并且没有其他办法可以替代,否则都应该选择INNODB 引擎”.例如:如果要用到全文索引,建议优先考虑INNO ...
- sql 语句左连接右连接小例子
A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 04 王五 select A.*,B.* fr ...
- python:UnboundLocalError: local variable 'xxx' referenced before assignment
近来一直都在学习python语言,偶然在伯乐在线看到2017年京东C/C++的面试题.就打算用python+ST3 IDE顺便敲下面试题代码. 原题 C语言: #include <stdio.h ...
- python百科
Python 编辑词条 添加义项名 B 添加义项 ? Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第 ...
- jquery如何判断滚动条滚到页面底部并执行事件
首先理解三个dom元素,分别是:clientHeight.offsetHeight.scrollTop. clientHeight:这个元素的高度,占用整个空间的高度,所以,如果一个div有滚动条,那 ...
- 如何利用PowerPoint2013制作阶梯流程图?
制作阶梯流程图有哪些窍门呢?下面我们一起来看看吧: ①启动PowerPoint2013,单击菜单栏--插入--形状,选择方角矩形,在图中画出来. ②画好矩形,摆放到合适的位置,如下图所示. ③然后再次 ...
- 如何在github上创建一个Repository (Windows)
一种方式是利用Github for windows工具 来操作github,这个是我推荐的方式 1 请先下载一个工具Github for windows,下载地址为:https://windows.g ...
- ajax vs oauth
http://www.cnblogs.com/rush/archive/2012/05/15/2502264.html https://www.ibm.com/developerworks/cn/xm ...