打印系统全解析:从历史演变到未来趋势
1. 打印系统的监测与历史背景
在实际的打印管理中,我们有脚本可以监测打印机的纸张和墨粉水平,并在必要时向支持人员发送邮件,例如“将更多纸张送到工程楼 423 房间”。
回顾打印系统的历史,几十年前,最常见的打印机是 ASCII 行式打印机,激光打印机既昂贵又罕见,高分辨率输出设备需要定制驱动软件和格式化程序。如今,激光打印机通常通过以太网、Wi - Fi 或蓝牙连接到 TCP/IP 网络,而不是通过串行或并行端口连接到单个计算机。激光打印机在低端市场已被喷墨打印机取代,彩色打印机曾经是奢侈品,现在却已成为常态,未来找到黑白打印机可能会像找到黑白电视机一样困难。
早期的打印机及其假脱机程序都很原始,当时认为计算机直接连接到打印机是理所当然的,打印机配置只需回答诸如“串行还是并行”之类的问题。非 UNIX 系统也是如此,不过它们是专有的,例如 IBM 系统知道如何驱动 IBM 打印机,苹果计算机知道如何驱动苹果 LaserWriter 打印机。最早的商业 UNIX 应用是为一家律师事务所开发的文档生产系统,其关键组件包括文本编辑器、标记语言(nroff/troff)和打印软件。
随着世界的复杂性增加,人们多次尝试为 UNIX 创建统一标准,但都没有成功,现有的打印协议也越来越陈旧。BSD 和 System V 打印系统都是为过去的行式打印机开发的,为了跟上技术发展,这些系统经过了大量修改和扩展,但仍无法很好地支持现代打印机,每增加一个新的打印机功能(如双面打印)都需要大量的特殊处理。
网络打印更是增加了复杂性,早期的网络打印系统很独特,使用各种协议进行打印机到假脱机程序、客户端到假脱机程序的通信以及网络流量协商。例如,HP 的 JetDirect 打印机通常在端口 9100 接受原始数据,采用 HP 惯例的其他制造商的打印机也是如此;而带有内部 lpd 守护进程(BSD 协议的实现)的打印机则在端口 515 接收作业。
为了解决这些问题,IETF 的打印机工作组创建了基于 HTTP 的 Internet 打印协议(IPP),它通过简单的 GET 和 POST 请求来构建交互,并利用标准技术进行身份验证、访问控制和加密。Easy Software Products(ESP)的 Michael Sweet 和 Andrew Senft 将 IPP 以 CUPS 实现的形式引入 UNIX,苹果公司在 Mac OS X 中采用了 CUPS(并在 2007 年购买了源代码),CUPS 成为了全球最完整的 IPP 实现,它是一个开源项目,解决了许多旧系统的问题,并且可以免费重新分发。
2. 打印机的多样性
打印机本身也存在多样性。由于打印机可以连接到计算机,用户往往将其与鼠标和显示器等外设归为一类,但实际上打印机更像智能手机或路由器,只是带有移动部件。曾经,苹果公司生产的最强大的计算机是 Apple LaserWriter,如今,桌面计算机可能比打印机更强大,但打印机仍然是一台计算机,它有 CPU、内存、操作系统,甚至可能有磁盘。
如果是网络打印机,它有自己的网络协议栈和 IP 地址。你可以在网页浏览器中输入打印机的地址(或 DNS 名称),很可能会看到一些网页,让你可以管理打印机硬件,这表明打印机正在运行自己的 Web 服务器。不过,这也带来了安全问题,打印机可能会受到攻击。
打印机运行的操作系统因供应商而异,甚至不同型号也可能不同,中高端打印机可能运行 UNIX 或 Linux 的衍生版本。打印机可以处理各种网络协议,接受多种打印机特定的页面描述和文档描述语言,甚至可以理解和打印常见的位图格式,如 GIF、JPG 和 TIFF。打印机可能只能打印黑白内容,也可能支持彩色打印,打印分辨率从每英寸 150 到 2400 点不等,甚至可能是不对称分辨率,如 1200 x 600。如果你管理的是大型设施,可能需要支持多个制造商的多种型号打印机,这意味着计算机上的打印软件必须能够通过一系列协议与不同(有时甚至未知)的硬件进行通信。
以下是打印机多样性的一些表现:
| 多样性方面 | 具体情况 |
| — | — |
| 操作系统 | 因供应商和型号而异,中高端可能运行 UNIX 或 Linux 衍生版 |
| 网络协议 | 可处理多种网络协议 |
| 支持语言 | 接受多种页面和文档描述语言 |
| 打印颜色 | 黑白或彩色 |
| 打印分辨率 | 150 - 2400 dpi 或不对称分辨率 |
3. 常见打印软件
打印不仅仅是假脱机和打印作业。即使在使用 CUPS 的 Ubuntu 系统上,运行以下命令:
$ man -k . | egrep -i 'ghostscript|cups|print(er|ing| *(job|queue|filter))'
会列出一百多个与打印相关的手册页,但并非所有找到的内容都与打印有关,例如 apcupsd 是与 APC 生产的不间断电源通信的守护进程,而 print 命令也与打印无关。
BSD 和 System V 打印系统缺乏驱动现代打印机所需的许多格式转换功能,因此使用这些系统的大多数供应商至少有一套工具来提供额外的功能,这些工具有时包含在操作系统中,但更多时候是额外付费的附加组件,第三方和免费分发的软件包也被广泛使用。
- pr 工具 :是最古老的打印工具之一,它将文本文件重新格式化为适合打印的页面,将输入分成每页 66 行,添加页眉和页脚,并可以对文本进行双行间距处理,非常适合在将文本文件发送到打印机之前进行简单的调整(每页 66 行是因为旧的绿白行式打印机每页能容纳这么多行)。
-
enscript 命令
:Adobe 的 enscript 命令可以进行类似的转换,并且功能更多,其输出是 PostScript。GNU enscript 是该命令的开源版本,与 Adobe 的版本向后兼容,还提供了许多新功能,如语言敏感的高亮显示、支持各种纸张尺寸、字体下载和用户定义的页眉等。enscript 的一个著名功能是 2 - up 打印,如果你不使用 CUPS,这个功能仍然很有用;如果使用 CUPS,可以尝试
lpr -o number - up = 2。 - Ghostscript :处于复杂度频谱的高端,最初由 Exeter 毕业生 L. Peter Deutsch 编写,用于在廉价的 PCL 打印机上打印 PostScript 文档。如今,Ghostscript 可以解释 PostScript 和 PDF,CUPS 将其用作过滤器,它也可以单独或在前端工具(如 Evince、gv、GNOME Ghostview(ggv)或 KDE 的 KGhostView)的帮助下为屏幕创建页面图像。Linux 发行版都附带了免费版本的 Ghostscript,如果你需要自己安装和构建,可以访问 ghostscript.com,Artifex Software 还提供有支持的商业版本。
以下是这些常见打印软件的对比:
| 软件名称 | 功能特点 | 输出格式 |
| — | — | — |
| pr | 重新格式化文本文件,添加页眉页脚,双行间距 | 适合打印的文本格式 |
| enscript | 功能多,有语言敏感高亮等 | PostScript |
| Ghostscript | 解释 PostScript 和 PDF,可创建页面图像 | 多种格式 |
4. 打印机语言
打印作业实际上是用专门的编程语言编写的计算机程序,这些编程语言统称为页面描述语言(PDL),PDL 的语言解释器通常在打印机内部运行。用 PDL 编码的页面比等效的原始图像传输起来更小、更快(在某些情况下也可能更大),并且 PDL 描述可以独立于设备和分辨率。
常见的 PDL 包括 PostScript、PCL5、PCL6(也称为 PCL/XL 或“pxl”)和 PDF,许多打印机可以接受多种语言的输入。打印机需要解释用这些语言编写的作业,并将其转换为对实际成像硬件有意义的位图表示,因此打印机包含语言解释器。这些语言存在多个版本,版本不同会有影响,例如大多数 PostScript 打印机理解 PostScript Level 3,但如果将 Level 3 程序发送到只理解 Level 2 的打印机,打印机可能会出现问题。
将 PDL 描述(或其他内容,如图像文件)光栅化为位图页面图像的过程称为“光栅图像处理”,执行此操作的程序称为 RIP。在计算机上对打印作业进行光栅化并在显示器上查看图像是可行的,许多 Windows “GDI”打印机就是这样工作的,但不同系统对这种操作模式的支持程度差异很大。
以下是几种常见打印机语言的介绍:
-
PostScript
:仍然是 UNIX 和 Linux 系统上最常见的 PDL,由 Adobe Systems 发明,许多 PostScript 打印机仍然使用从 Adobe 获得许可的解释器。几乎所有页面布局程序都可以生成 PostScript,有些程序只使用 PostScript。PostScript 是一种成熟的编程语言,大多数 PostScript 程序可以用文本编辑器或 less 查看,程序中充满了括号、花括号和斜杠,通常以字符 %!PS 开头,尽管语言本身并不要求这些起始字符,但 PostScript 解释器和其他打印软件在识别和分类打印作业时经常会寻找它们。
-
PCL
:是惠普的打印机控制语言,惠普打印机以及许多其他品牌的打印机都能理解,有些打印机只支持 PCL。与 PostScript 这种图灵完备的通用编程语言不同,PCL 只是告诉打印机如何打印页面。PCL 作业是二进制的,不可读,通常比等效的 PostScript 短得多。应用程序很少直接生成 PCL,但过滤器可以将 PostScript 转换为 PCL。PCL 的差异比 PostScript 更大,虽然差异较小但很烦人,例如在 LaserJet 5si 上打印正确的作业在 LaserJet 5500 上可能会有轻微错误。惠普定义了两个几乎完全不相关的语言家族 PCL5(PCL5C 表示彩色,PCL5E 表示黑白)和 PCL6(也称为 PCL/XL),现在新的惠普打印机通常同时具备这两种语言的解释器。
-
PDF
:是 Adobe 的便携式文档格式,由 Adobe Acrobat 和许多其他非 Adobe 应用程序生成,例如 OpenOffice 更喜欢将文档导出为 PDF。PDF 文档与平台无关,常用于电子文档的在线和离线(打印)交换,本书的最终文本就是以 PDF 文件的形式交付给印刷厂的。PDF 不仅是页面描述语言,还是文档描述语言,它描述了文档的整体结构,还支持各种多媒体、超文本和脚本功能,用于屏幕显示。有些打印机可以直接解释 PDF,如果你的打印机不支持,有许多 PDF 查看器和转换器(如 Ghostview、xpdf、kpdf、Evince 和 Acrobat Reader)可以将 PDF 文档转换为更广泛支持的格式(如 PostScript),你的打印系统甚至可能会自动隐藏转换要求,在将 PDF 文档发送到打印机之前进行转换。
-
XPS
:是微软的 XML 纸张规范,也称为 XPS 或 OpenXPS,即使在 Windows 系统上也尚未广泛使用,UNIX 和 Linux 目前的支持很少,不过 Artifex 已经有了 XPS 解释器,如果 XPS 变得流行,Linux 发行版肯定会开始支持它。
-
PJL
:惠普的打印机作业语言,不是真正的 PDL,而是一种描述打印机作业的元语言。在打印机描述中会提到它,如果你想查看打印作业的内部结构以解决打印问题,也需要了解它。PJL 是一种作业控制语言,用于指定作业的 PDL、是否双面打印、使用的纸张尺寸等,PJL 命令位于作业开头,所有 PJL 语句都以 @PJL 开头,例如:
@PJL SET COPIES=3
@PJL COMMENT FOO BAR MUMBLE
@PJL SET DUPLEX=ON
@PJL SET PAGEPROTECT=OFF
@PJL ENTER LANGUAGE=PCL
非惠普打印机可能理解(或故意忽略)PJL,但如果你在非惠普打印机上打印包含 PJL 的内容有问题,可以尝试用文本编辑器删除 PJL 后重新提交作业。
以下是几种打印机语言的对比表格:
| 语言名称 | 发明者 | 特点 | 可读性 | 应用场景 |
| — | — | — | — | — |
| PostScript | Adobe Systems | 成熟编程语言,多数布局程序可生成 | 可读 | UNIX 和 Linux 系统常见 |
| PCL | 惠普 | 告诉打印机如何打印页面 | 二进制不可读 | 惠普及部分其他打印机 |
| PDF | Adobe | 平台无关,描述文档整体结构 | - | 文档交换 |
| XPS | 微软 | XML 纸张规范 | - | 未广泛使用 |
| PJL | 惠普 | 作业控制元语言 | - | 打印作业控制 |
5. 打印机驱动程序与 PDL 处理
如果打印机只支持你需要处理的语言的子集,该怎么办呢?例如,如果你从网上下载了一个 PostScript 文件,但打印机只理解 PCL5E,或者打印机不能直接解释 PDF 文件,该如何打印呢?
一种选择是手动转换文件,你的系统自带了很多转换实用程序,几乎总有办法将你拥有的文件转换为打印机可以打印的格式。例如,浏览器可以将 HTML(或 XHTML)页面转换为 PostScript,OpenOffice 可以将 MS Word 文件转换为 PDF,Ghostscript 可以将 PDF 转换为 PostScript,将 PostScript 转换为包括 PCL 在内的几乎任何格式。
另一种更简单的方法是让打印系统为你完成工作,像 CUPS 这样的系统有一些内置的知识,知道需要进行哪些转换,并可以自动为你设置转换。
如果你需要确定文件使用的 PDL,但从文件名(如 foo.pdf)无法判断,可以使用 file 命令(除非文件以一段 PJL 指令开头,此时 file 命令只会显示“HP Printer Job Language data”)。你可以将一些打印作业保存为文件而不是发送到打印机,在文本编辑器中查看这些文件,了解这些语言的程序是什么样的(不要直接将它们输出到屏幕,因为只有 PostScript 是 ASCII 格式,随机的二进制数据可能会使终端模拟器混乱)。以下是几种语言的示例代码:
- PostScript:
%!PS-Adobe-3.0
%%BoundingBox: 0 0 612 792
%%Pages: 1
% ...
% Draw a line around the polygons...
pop pop pop dup 0 setgray 0 0 moveto dup 0 lineto 0.707106781 mul dup
lineto closepath stroke
- PDF:
%PDF-1.3
%A?A?AA"
81 0 obj
<<
/Linearized 1
/O 83
/H [ 915 494 ]
/T 125075
>>
endobj
xref
81 24
0000000016 00000 n
A^<8f>
^P^@A?A`<9e>
endstream
endobj
- PCL5:
^[E^[&l1o0o1t0l6D^[&l1X^[*r0F^[*v0n1O^[*p4300X^[%1BDT~,1TR0TD1SP1FT10,50
CF3,1LB.~;^[%1A^[*c100G^[*v2T^[&a0P^[*p0X^[*p0Y^[(10U^[(s1p12vsb4148T^[&l0
E^[*p0Y^[*ct7920Y^[(10U^[(s1p12vsb4101T^[&a0P^[&l0o66f0E^[9^[&a0P^[*p0X^[*
p0Y^[*p474Y^[*p141X^[(10U^[(10U^[(s1p12vsb4101T^[*p402Y^[*p186X^[*v0O^[*c9
00a4b100g2P^[*v1O^[*p250Y^[*v0O^[*c900a4b100g2P^[*v1O^[*v0O^[*c4a156b100g2
P^[*v1O^[*p251Y^[*p187X^[*v0O^[*c899a154b10g2P^[*v1O^[*p346Y^[*p256X
- PCL/XL:
A`X^BX^BA?<89>A^@A?<86>A^CA?<8f>AA^@A?<88>A^AA?<82>HA^@A?(A^@A?
%AA?cA^A^P^@TimesNewRmnBdA?A?A?UUA?BA?A?Au^BA?A?o<85>A"A>^CA^
BA?LkAf^@^@A?A!dA^A:^@
6. PPD 文件
当你使用
lpr
命令打印 book.ps 文件到彩色打印机 Pollux 时,
lpr
可能会询问你要使用的纸张尺寸。那么系统是如何知道告诉客户端
lpr
,Pollux 可以打印 A4 纸,它可以处理 PostScript,如果不能处理该怎么办,以及从哪里获取 Pollux 是彩色打印机的信息呢?
如果你使用的是 CUPS,所有这些信息都保存在 PostScript 打印机描述(PPD)文件中,这些文件描述了打印机的属性和功能。CUPS 守护进程读取打印机的 PPD 文件,并根据需要将相关信息传递给客户端和过滤器。
PPD 文件最初是为 Mac 系统开发的,但很快也被 Windows 采用,Mac 和 Windows 的打印机驱动程序使用 PPD 文件来确定如何将 PostScript 作业发送到打印机。例如,要求在美国销售的单面黑白打印机在欧洲 B4 尺寸的纸张上打印双面彩色文档是没有意义的。
每个 PostScript 打印机都有供应商创建的自己的 PPD 文件,但有时可能不太容易找到,可以在安装磁盘和供应商的网站上查找。PPD 文件只是文本文件,你可以在文本编辑器中查看它包含的信息。在网络上,PPD 文件甚至可以是远程的,CUPS 客户端可以从相关的 CUPS 服务器获取所需的所有 PPD 信息。
CUPS 还使用 PPD 文件来描述没有 PostScript 解释器的打印机,通过一个额外的字段就可以实现,例如:
$ grep cupsFilter /usr/share/ppd/ghostscript/model/pxlmono.ppd
*cupsFilter:
"application/vnd.cups-postscript 100 pstopxl"
*cupsFilter:
"application/vnd.cups-pdf 0 pstopxl"
综上所述,打印系统涉及到从历史演变到现代技术的多个方面,包括打印机的监测、打印系统的发展、打印机的多样性、常见打印软件、打印机语言以及 PPD 文件等。了解这些知识可以帮助我们更好地管理和使用打印系统。未来,随着技术的不断发展,打印系统可能会更加智能化、高效化和安全化。例如,可能会有更先进的监测技术来更准确地管理打印机的资源,打印语言可能会更加统一和标准化,以减少兼容性问题。同时,随着物联网和云计算的发展,打印服务可能会更加便捷和灵活,用户可以通过网络随时随地进行打印。我们需要持续关注这些发展趋势,以适应不断变化的打印需求。
打印系统全解析:从历史演变到未来趋势
7. 打印系统的安全考量
打印机作为网络中的一个节点,其安全问题不容忽视。由于网络打印机具有自己的网络栈和 IP 地址,并且运行着自己的 Web 服务器,这就使其成为了潜在的攻击目标。
攻击者可能会尝试对打印机进行各种攻击,例如:
-
数据窃取
:通过入侵打印机,获取打印作业中的敏感信息,如商业机密、个人隐私等。
-
拒绝服务攻击(DoS)
:使打印机无法正常工作,导致业务流程受阻。
-
恶意软件植入
:在打印机中植入恶意软件,利用打印机作为跳板攻击其他网络设备。
为了保障打印机的安全,可以采取以下措施:
| 安全措施 | 具体操作 |
| — | — |
| 更改默认设置 | 更改打印机的默认用户名、密码和管理端口,避免使用容易被猜到的默认值。 |
| 定期更新固件 | 及时安装打印机厂商发布的固件更新,修复已知的安全漏洞。 |
| 网络隔离 | 将打印机放置在单独的子网或 VLAN 中,限制其与其他设备的直接通信。 |
| 访问控制 | 设置严格的访问权限,只允许授权用户访问打印机的管理界面和功能。 |
| 监控日志 | 定期查看打印机的日志,及时发现异常活动并采取措施。 |
8. 未来打印系统的发展趋势
随着科技的不断进步,打印系统也在朝着更加智能化、环保化和高效化的方向发展。以下是一些未来打印系统可能的发展趋势:
-
3D 打印的普及
:3D 打印技术已经在制造业、医疗、教育等领域得到了广泛应用,未来其应用范围可能会进一步扩大,甚至可能会进入家庭市场。
-
云打印服务的发展
:云打印允许用户通过互联网随时随地进行打印,无需在本地安装打印机驱动程序。未来,云打印服务可能会更加完善,提供更多的功能和更好的用户体验。
-
环保打印技术的创新
:随着环保意识的提高,未来的打印系统可能会采用更加环保的技术,如使用可降解的油墨和纸张,减少能源消耗等。
-
人工智能在打印中的应用
:人工智能可以用于优化打印作业的调度、提高打印质量和效率,以及预测打印机的故障和维护需求。
下面是一个简单的未来打印系统发展趋势的 mermaid 流程图:
graph LR
A[3D 打印普及] --> B[更广泛应用]
A --> C[进入家庭市场]
D[云打印服务发展] --> E[功能完善]
D --> F[更好用户体验]
G[环保打印技术创新] --> H[可降解材料]
G --> I[降低能耗]
J[人工智能应用] --> K[优化调度]
J --> L[提高质量效率]
J --> M[预测故障维护]
9. 打印系统的优化建议
为了提高打印系统的性能和效率,可以从以下几个方面进行优化:
-
硬件优化
:
- 选择性能良好的打印机,根据实际需求选择合适的打印速度、分辨率和功能。
- 定期对打印机进行维护,如清洁打印头、更换耗材等,确保打印机的正常运行。
- 合理布局打印机的位置,减少网络延迟和传输距离。
-
软件优化
:
- 使用最新版本的打印驱动程序和打印软件,以获得更好的兼容性和性能。
- 优化打印队列的设置,合理分配打印任务,避免出现打印拥堵的情况。
- 启用打印缓存功能,减少打印作业的等待时间。
-
管理优化
:
- 建立打印管理制度,规范用户的打印行为,减少不必要的打印浪费。
- 对打印使用情况进行统计和分析,根据分析结果调整打印策略和资源分配。
- 提供打印培训和技术支持,帮助用户正确使用打印系统,提高工作效率。
10. 总结与展望
打印系统是一个复杂而又重要的领域,涉及到硬件、软件、网络和管理等多个方面。从打印系统的历史演变可以看出,随着技术的不断发展,打印系统也在不断地进步和完善。
在当今数字化时代,打印系统仍然具有不可替代的作用。我们需要充分了解打印系统的各种知识,包括打印机的多样性、常见打印软件、打印机语言、PPD 文件等,以便更好地管理和使用打印系统。
同时,我们也应该关注打印系统的未来发展趋势,积极采用新的技术和方法,不断优化打印系统的性能和效率,以适应不断变化的业务需求和社会发展的要求。相信在未来,打印系统将会变得更加智能、环保和高效,为我们的工作和生活带来更多的便利。
总之,无论是个人用户还是企业用户,都应该重视打印系统的管理和优化,充分发挥打印系统的作用,为实现自身的目标提供有力的支持。
超级会员免费看
151

被折叠的 条评论
为什么被折叠?



