Chinaunix首页 | 论坛 | 博客
  • 博客访问: 762026
  • 博文数量: 790
  • 博客积分: 40560
  • 博客等级: 大将
  • 技术积分: 5065
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-28 16:29
文章分类

全部博文(790)

文章存档

2011年(1)

2008年(789)

我的朋友

分类: LINUX

2008-08-28 17:09:09

 

  一、Linux打印系统发展路线图

  在Unix世界里,PostScript语言是主要用于打印的接口。所有主要的应用程序都会输出通用的PostScript页面,而这些PostScript经过打印系统处理后再被打印出来。打印在Unix世界的演化中总是围绕着PostScript页面描述语言展开的。该语言是由Adobe公司开发的,它是一个成熟的、用于描述一个文档每一页面内容的程序语言。如今很多打印机中都有一个嵌入式的PostScript解释器,它负责使用PostScript将页面在打印纸上再现出来。现在,所有桌面Linux应用程序都有一个打印选项,可以生成PostScript数据来打印整页的文档。这种方法和其它面向桌面的操作系统有很大的不同,大部分Unix系统是提交任务至队列中,并且希望它能够正确地打印出来。但是并没有一种统一的收集打印机信息或工作状态的方法,这严重影响了那些需要提供打印能力的Linux应用程序。在Linux中,虽然PostScript是产生打印文档的事实上的标准,但打印机本身却并不需要知道PostScript,因为这需要使用到相对比较昂贵的技术。

  在一般情况下,尤其是在低端打印机中,PostScript数据要被翻译成打印机本地的页面描述语言。这是通过使用一个特殊的转换过滤器来完成的。一般而言,一个过滤器实际上就是一个特殊的程序,它可以处理输入的数据,并且输出经过加工的数据。现在,Linux打印系统中使用着各种不同的过滤器:转换过滤器、I/O过程器(负责将数据传送至设备)、处理过滤器(转换文档数据)。打印系统的基础是一个假脱机程序(Spooler)。它可以管理打印任务队列,而一个队列通常和一个打印机相关联,并且用户提交的任务都是按照先进先出的原则来处理的。当一个打印任务被处理时,任务中的数据在送达打印机前一般都要通过一定数量的过滤器。

天极软件专题专区精选WindowsVista专区POPO专区QQ专区 QQ挂机注册表应用专区FlashMX视频教程Photoshop视频教程网页设计视频教程照片处理数字暗房PPT动画演示教程Excel动画教程集Word动画演示教程Google专区特洛伊木马专区黑客知识教程专区防火墙应用专区了解Web2.0WindowsAPI开发专区网络编程专区VB数据库编程专区图像处理与多媒体编程

  使用PostScript页面描述语言进行打印的优点是极大的简化的设计,不用像Windows系统一样安装各种打印机驱动程序。但是它的缺点是许多打印机(特别是低端打印机)不能解析PostScript输出,Linux系统对此的解决方法是从打印机队列调用Ghostscript()软件包支持你的打印机。要查看Ghostscript在你的Linux发行版本上支持什么打印机列表,可以在命令行下键入:

$gs--help


  gs命令会列出一份它支持的打印机和输出设备的名单。gs命令使用-r选项设置打印分辨率。调整ghostscript的输出结果,假如gs的输出不能让人满意,还有一些办法::输出的位置及大小。位置,大小,还有图像在页面上的视觉比例是由ghostscript中的打印机驱动程序所控制的.如果你发现打印出来太短,太长或是大了两倍,你可能会想要看一下驱动程序的原始模组并且调整任何所能想到的参数。

  一代的BSDLPD打印系统这个打印系统源自于伯克利的Unix发行版,BSDLPD是用于Linux发行版(比如Slackware)的第一个打印系统。现在仍然有发行版(Debian、Slackware)还会带有这种假脱机打印程序。BSD打印系统核心的功能仅限于队列任务。它由一个后台程序(lpd)及一些位于/etc目录下的配置文件组成,在这些配置文件中有着队列和属性的一些定义。在相应的目录下,还有一系列基本的用于提交、删除和处理任务使用的命令(lpd、lprm、lpc)。BSDLPR是BSD打印系统重要一个部分,因为它定义了LPD网络协议,而该协议是用于提交任务至远程LPD后台程序的,并且它允许Unix工作站实现一个打印服务器的功能。现在,所有的网络打印机都支持这个协议。由于它使用范围非常广泛,所有其它打印系统都要求至少可以和其它的LPD后台程序进行会话。下面是如何在printcap文件中定义一个远程队列的例子。在这个例子中,任务将会被即时传送至远程监控程序的队列之中,并且不会在本地机进行处理。

remote:
:sd=/var/spool/lpd/remote: :rm=printserver.domain.tld:
:rp=queue:
:mx#0:

  LPD协议传送数据被分成两个部分。首先会生成一个描述任务的控制文件,并且传送该文件。该控制文件包含有源用户、文件名和所有与工作相关的信息。接着就会传送数据文件,它的格式完全取决于目前正在使用的打印语言。

  第二个使用较广、较有影响力的基于BSD的打印系统是LPRng(LPRNextGeneration),该系统实际上重写了原来的BSDLPR系统,但原有概念都保留了下来。保留了printcap文件的格式,但是它还引入了一些新的属性以使配置过程更加灵活。过滤器定义可以被独立出来,并且还可以定义真正的I/O过滤器。用户也可以通过在本地机主目录下编写printcap文件来定义自己的队列。LPRng打印系统的优点:1、不需数据库环境就可以执行lprlpclprm命令。2、打印队列可以自动转向。3、打印工作可以自动保留。4、多重打印机可以使用同一打印队列。5、客户端不需这些SUIDroot。6、可以大幅度提高安全性检查。7、可以使用Printconf工具维护配置文件(/etc/printcap)。LPRng还提供了模拟UnixSystemV风格的打印命令(lp、lpstat等)。随LPRng发行的还有IFHP过滤器,它可以用在队列中,用于自动转换一些数据格式(比如打印ASCⅡ文本或图像)。

  通用Unix打印系统(CUPS)是比较新的打印系统。CUPS软件为Unix/Linux用户提供了以有效而可靠的方式来管理打印的方法。它生来就支持IPP(因特网打印协议),IPP协议的四个主要目的是:1、帮助用户寻找为了上可用的打印机。2、传送打印作业。3、传送打印机状态信息。4、取消打印作业。并有LPD、SMB(服务器消息块,例如与MicrosoftWindows连接的打印机)和JetDirect接口。CUPS采用的另外一个标准是PPD(PostScriptPrinterDefinition)文件格式,这是Adobe另外一个用于PostScript打印机的标准。从以上可以看出CUPS打印系统是目前Linux打印系统中最好的选择,从RedhatLinux9.0开始它取代了LPRng成为Linux缺省安装的Linux打印系统。Linux支持许多种类的打印机,从老式的针式打印机,到最新的激光打印机,都可以使用。了解目前Linux支持什么打印系统非常重要,下面我们看看几个主流Linux发行版本使用的打印系统。CUPS还采用了很多过滤器用于传送数据至打印机的方法。与BSD类的假脱机程序不同的是,这是通过一种更加智能的方式来完成的。下面是在CUPS中可用的部分过滤器:

  1.后端过滤器。它可以提供最终数据进行传送的端点。这些过滤器可用于并口、TCP/IP套接字连接、LPD和其它端点的连接。

  2.文档转换过滤器。该过滤器是作为CUPS一个标准配置一起发行的。它可以转换图像、ASCⅡ文本、PDF文件和HP-GL/2矢量文档至PostScript。

  3.接口过滤器。它可以将文档从PostScript转换至其它过渡的文件格式。

  表-1主流Linux发行版本使用的打印系统

发行版本和产品序列号

默认安装打印系统

可以兼容打印系统

RedHatEnterpriseLinux4.0

CUPS

LPRng

CentOS4.2

CUPS

LPRng

MandrakeLinuxLE2005

CUPS

LPRng

DebianGNU/Linux3.1r0

BSDLPD

CUPS,LPRng

SlackwareLinux10.2

LPRng

SuSELinux9.3

CUPS

TurboLinux10F

CUPS

Gentoo2005.0CUPS

  CUPS是跨桌面的,也就是说你可以在GNOME或KDE下安装你的打印机工作。CUPS主要功能:

  Print将文件发送到特定的URI的打印机;Validate 设定打印优先级别

  Creat将文件作为打印作业处理; Cancal取消打印作业

  Pause暂停打印作业;Resume恢复打印作业

  Purge清除打印作业

  下面我们看如何为你的Linux系统配置打印系统。以RedHatEnterpriseLinux4.0。为例。


阅读(464) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~