跟我一起学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学到文件操作之后,回顾感觉会又不会? 学会了又感觉没学会?这种不踏实.模糊虚无的感觉? 原因在于编程不同于理论学科,你听懂和理解了理论就可以运用. 比如历史地理,看 ...
随机推荐
- Swift - 04 - 浮点型
import UIKit var str = "Hello, playground" // 显式定义浮点型常量 let PI:Float = 3.141592612312312 l ...
- PHP 数据库 ODBC
PHP 数据库 ODBC ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数 ...
- 手把手教你DIY一个春运迁徙图(一)
换了新工作,也确定了我未来数据可视化的发展方向.新年第一篇博客,又逢春运,这篇技术文章就来交给大家如何做一个酷炫的迁徙图(支持移动哦).(求star 代码点这里) 迁徙图的制作思路分为静态的元素和变换 ...
- Hive学习之二 《Hive的安装之自定义mysql数据库》
由于MySQL便于管理,在学习过程中,我选择MySQL. 一,配置元数据库. 1.安装MySQL,采用yum方式. ①yum install mysql-server,安装mysql服务端,安装服 ...
- vim 支持gb2312
vi /etc/vimrc 中添加如下,并保存. set termencoding=encodingset fileencodings=utf-8,gbk,ucs-bom,cp936set shif ...
- 【USACO 1.5.1】数字金字塔
[题目描述] 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 ...
- 动态加载下拉框列表并添加onclick事件
1. js动态加载元素并设置属性 摘自(http://www.liangshunet.com/ca/201408/336848696.htm) <div id="parent&quo ...
- 关于canvas 易忘属性
globalAlpha=1//表示全局的一个透明度值 默认值是1 globalCompositeOperation // 默认值="source-over"(Default)
- python运维开发之第七天
一.面向对象编程进阶 1.静态方法 @staticmethod 名义上归类管理,实际上跟类没什么关系 在静态方法里,访问不了类或实例中的任何属性 class Static_method(object) ...
- C语言笔记(数组地址一些细节)
一.数组的a+1和&a+1的区别 先看看测试代码: ]={}; printf(" sizeof(data) = %d.\n", sizeof(data)); printf ...