| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
龙腾教程网  
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
 
  您当前位置:您现在的位置: 龙腾软件教程网 >> 文章中心 >> 操作系统 >> FreeBSD >> 文章正文>>>>>> 
FreeBSD系统配置打印机方法

 

  • 在PostScript打印机上打印

  大多数打印机不但能打印字符,也能够打印图形,应用软件通过输出控制字符对打印机进行控制。这些控制字符就被称为打印机控制语言。为了将字符和图形文件输出到打印机上,就需要过滤器将打印文件转化为打印机识别的打印语言。

  打印过滤器是打印程序的一个重要部分,使Unix的打印系统更为灵活,从而能适合各种不同的打印机。除了将文档转换为打印机识别的语言之外,还可以对要打印的文件做其他处理,例如某些行式打印机需要文档同时使用回车和换行,而 Unix的文本文件只使用换行,此时直接打印文档就会造成行列不齐,这些情况下就需要一个过滤器进行转换。

  打印机控制语言可以分为两类,一种将操纵打印机进行绘图的命令及其他控制命令通过特殊字符(或特殊字符引导的命令)来表示,对普通字符文件不作处理,直接发送到打印机。此时普通英文字符文件可以直接发送到打印机上打印,但要打印包括图形在内的文件就是包括特殊控制字符的二进制文件,不能用文本方式进行查看。另一种为Postscript语言,它使用页面描述语言来描述要打印的内容,可以直接打印的文件就是一个符合一定语法规则的文本文件,因此对于一个Po stScript打印机来讲,一个普通文本文件只是一个不合乎语法的PostScript语言文件,不能被直接打印。

  因此如果要在仅支持PostScript的打印机上打印普通文档,也必须使用识别PostScript的过滤器进行转换,首先将普通文本文件转换为PostScript语言,再发送给PostScript打印机进行打印。Fr eeBSD的Packages Collection中专门有一个类别print,提供了很多打印相关的软件包,其中包括很多种将文本文件转换为PostScript文件的过滤器程序,如a2ps等。其中gb2ps能将GB编码的文本转换未内嵌中文的PostScript文件,从而能在PostScript打印机上将中文文件打印出来。

  当能够使用Ghostscript打印文档之后,就需要将它和FreeBSD的打印过滤器集成在一起了,因此首先要将打印的文档转换为PS文档,然后将PS文档转换为打印机支持的格式,因此就需要更改过滤程序。例如在一个EP SON行式打印机上输出文档,使用的标准过滤应该是,最后两个短横线表示标准输出和标准输入:

#! /bin/sh
a2ps -q -o - |
gs -sDevice=epson -sOutfile=- -

  

  • 使用apsfilter配置打印机

      设置打印机要手工编辑/etc/printcap文件,安装并配置各种过滤器,安装Ghostscript等。这些操作都非常烦琐,幸好FreeBSD通过Ports Collection提供了一种自动配置打印机的apsfilter程序。

      Ports Collection的机制、用法将在后面讨论。

      为了使用apsfilter设置打印机并配置过滤器,就需要执行下列命令:

    # cd /usr/ports/print/apsfilter/
    # make install

      然后,系统将自动下载、编译安装必要的过滤器软件,此后将自动启动一个设置程序,通过菜单提示让用户选择打印机的各种属性,包括打印机的类型、端口、分辨率、纸张大小等等。最后将自动生成合适的printcap文件和各种过滤器。这些过滤器能分辨要打印文件的类型,进行正确的处理。

      apsfilter生成的过滤器是调用包括ghostscript在内的大量其他软件,因此上面的make过程就需要从网络上下载必要软件包,可以通过预先安装相应的Packages以减少下载任务。如果网络太慢,下载过程可能会出现问题导致软件安装问题,后面会讲到如何为Ports Collection手工下载必要的软件包。

    • 使用和控制打印机

      当一切都配置正确之后,使用打印机就非常简单了。为了自动启动lpd守护进程,需要将/etc/rc.con f文件中的lpd_enable项设置为lpd_enable=”Yes”,FreeBSD在下次系统启动时会自动启动lpd。当lpd没有启动时,也不需要重起计算机,简单使用root身份执行lpd就可以启动这个守护进程。有了l pd守护进程,打印系统就能正常进行打印工作,并能针对整个网络上的用户,提供打印服务了。

      使用者可以直接使用lpr命令打印文件,或者通过管道来使用lpr命令。

    $ lpr hello.c
    $ ls | lpr

      如果系统中某个打印机没有配置打印过滤器,用户可以直接使用自己的打印过滤器,通过管道将输出送到lpr中。这提供了一种较灵活的配置方式,使得用户不需要root权限,也能使用合适的打印机过滤器。下面是一个使用gs打印文件的例子:

      注意这个例子中使用反斜线取消竖线的特殊含义,将其和紧随其后的lpr一起作为参数发送给gs,gs再将其解释为管道操作。可以将上面的文件编制成shell程序,这样每次就能更方便的使用。

      当使用lpr将打印作业放入打印缓冲区之后,就能使用lpq命令来查看打印队列的内容:

    $ lpq
    waiting for lp to become ready (offline ?)
    Rank  Owner  Job Files         Total Size
    1st  user  1  hello.c        151 bytes
    2nd  user  2  (standard input)   3359 bytes
    3nd  user  3  (standard input)   43765 bytes

      在这个例子中,由于打印机lp没有被正常连接到系统上,因此lpq在第一行提醒使用者当前打印机不正常。由于这台打印机工作不正常,因此用户可能不想使用这个打印机进行打印了,而想通过其他打印机进行打印。为了避免在这台打印机正常之后,仍然打印这个作业,需要将这个打印作业删去。这可以通过命令lprm加上作业序号(显示在lpq中第三列)来完成:

    $ lprm 1
    dfA001freebsd.domain dequeued
    cfA001freebsd.domain dequeued

      或者使用all作参数,这将删除该用户的所有打印作业。用户只能删除自己的打印作业,只有root才能删除其他用户的作业。如果root使用all参数,那么将会将这个打印机缓冲区中的所有打印作业全部清空。

      作为系统管理员,需要进一步的能力来管理打印守护程序。BSD风格的打印系统使用lpc来执行这个功能,以 root身份启动lpc,则进入lpc的交互模式,然后使用help命令可以得到管理命令的列表。一般可以使用start all 命令来启动所有的打印机,或者使用stop lp命令来停止一台名为lp的打印机。

    # lpc
    lpc > start all

      也可以用命令行的方式使用lpc,例如重新启动所有的打印机,使用带参数的lpc发出以下命令:

    # lpc restart all

      因此首先应该安装这些转换软件包,当安装了这些转换程序之后,最简单的使用方式是先使用他们将文档转换为Po stscript文件,再发送给打印命令lpr,这可以通过管道来实现。一些打印工具内部就包括了使用管道,自动将生成的Postscript数据发送给lpr命令的指令,下面的a2ps指令就直接将PostScript文件发送给l pr命令。

      $ a2ps file

      或者可以在printcap文件中设置if参数,以自动使用这些过滤器,此时要设置过滤程序从标准输入上读入数据,将PostScript数据从标准输出上输出。

      :if=/usr/local/bin/a2ps -q -o -:

      对于要使用gb2ps来打印中文文件的情况,由于gb2ps使用参数读入源文件、并输出PostScript 中文文件,不使用标准输入输出,因此不能直接使用gb2ps作过滤器程序,而需要自己使用临时文件保存中间结果,生成 PostSript文件之后再打印。此外,gb2ps输出的PostScript文件都包括一页gb2ps的版权信息,对于打印来讲没有必要每次都打印这个版权页,可以使用psutils中包括的psselect程序,从原有文件中去除第一页,再进行打印。

      高级的过滤器程序应该能够识别各种不同格式的文档文件,并依据文档的格式,使用不同的过滤器功能来进行处理,最后生成符合打印机描述语言的打印文件。

    • PostScript与Ghostscript

      PostScript使用命令来描述页面,虽然也是文本文件,但这里都是绘图指令,需要一个PostScript 语言解释器对文件中描述的指令进行解释操作,才能得到正确的结果。因此PostScript文件在普通打印机上只能打印出源文件,同样普通文档在PostScript打印机上也不能正确解释、打印出来。下面是一个PostScript 文件的开始部分:

      %!PS-Adobe-3.0
    %%Creator: gb2ps
    %%CreationDate: Fri Oct 31 18:36:45 1998
    %%DocumentNeededResources: font Symbol
    %%+ font Courier
    %%+ font Times-Roman
    %%DocumentSuppliedResources: file images/file.ps
    %%Pages: 32
    %%PageOrder: Ascend
    %%Orientation: Portrait
    %%EndComments
    %%BeginProlog

      如果要查看PostScript的内容,则需要一个页面语言解释器。虽然存在不少商业PostScript解释器,但大部分并不见得比Ghostscript好,虽然GhostScript只是一个免费的PostScript 解释器。GhostScript能在X Window下正确显示PostScript文件的内容,并能实现各种强大的 PostScript处理能力。Ghostscript是一个相当复杂的程序,如果仅仅是要查看Postscript 文件的内容,可以使用命令 “gs psfile.ps” ,退出时在Ghostscript提示下输入 “quit ” 即可。

      $ gs psfile.ps
    Aladdin Ghostscript 5.50 (1998-9-16)
    Copyright (C) 1998 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
    This software comes with NO WARRANTY: see the file PUBLIC for details.
    GS> quit

      另外,Ghostscript有一个前端程序Ghostview,能使用Ghostscript来浏览PostScript 文件,但使用了比较简单的图形操作方式。Ghostscirpt和Ghostview都可以通过Packages Collection 安装。

    • 在非PostScript打印机上打印

      通常非PostScript打印机使用特殊的ESC序列来表示命令,而对普通文本不做特殊处理,因此文本文件仍然被看作文本文件,能够直接打印文本文件,因此这些非PostScript的打印机能够直接设置为普通的文本打印机来使用。

      然而要想充分发挥打印机的能力,打印包括图形在内的文档,就必须有能理解这台非PostScirpt打印机使用的控制语言的过滤器。这些过滤器就相当于Windows下的打印机驱动,应该由生产这台打印机的厂商提供。但是很多低档打印机是专门为使用DOS或Windows的计算机生产的,没有为Unix配置过滤器,因此在这些打印机上打印图形就遇到了困难。幸运的是,Ghostscript能够识别很多种打印机,并能将PostScript文件在指定的设备上打印出来。

      因此在前面的操作中生成了Postscript文件之后,就可以使用Ghostscript在一台非Post Script打印机上打印PostScript文件,下面文件将在一台Laserjet4打印机上打印test.ps 文件。

      # gs -sDEVICE=ljet4 -sOutput=/dev/lpt0 test.ps
    使用gs -help能列出一系列Ghostscrit支持的设备文件,有些是打印机设备,有些是代表不同的图形格式的伪设备。
    $ gs -help
    Aladdin Ghostscript 5.50 (1998-9-16)
    Copyright (C) 1998 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
    Usage: gs [switches] [file1.ps file2.ps ...]
    Most frequently used switches: (you can use # in place of =)
    -dNOPAUSE      no pause after page  | -q    `quiet', fewer messages
    -gx page size in pixels  | -r pixels/inch resolution
    -sDEVICE= select device     | -dBATCH exit after last file
    -sOutputFile= select output file: - for stdout, |command for pipe,
                         embed %d or %ld for page #
    Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF
    Available devices:
      appledmp iwhi iwlo iwlq hl7x0 bj10e bj200 bjc600 bjc800 lbp8 lips3 m8510
      uniprint la50 la70 la75 la75plus lj250 declj250 ln03 ap3250 epson eps9mid
      eps9high lp8000 lq850 epsonc st800 stcolor lp2563 dnj650c deskjet djet500
      cdeskjet djet500c cdjcolor cdjmono cdj500 cdj550 cdj670 cdj850 cdj890
      cdj1600 laserjet ljetplus ljet2p ljet3 ljet3d ljet4 lj4dith cljet5
      lj5mono lj5gray pj pjetxl pjxl paintjet pjxl300 pxlmono bbox pxlcolor
      ibmpro jetp3852 imagen cp50 necp6 oce9050 oki182 okiibm r4081 sj48 xes
      bmpmono bmp16 bmp256 bmp16m ccr cgmmono cgm8 cgm24 sxlcrt dfaxhigh
      dfaxlow faxg3 faxg32d faxg4 bit bitrgb bitcmyk cif miff24 inferno jpeg
      jpeggray mgrmono mgrgray2 mgrgray4 mgrgray8 mgr4 mgr8 pcxmono pcxgray
      pcx16 pcx256 pcx24b pcxcmyk pdfwrite plan9bm pbm pbmraw pgm pgmraw pgnm
      pgnmraw pnm pnmraw ppm ppmraw pkm pkmraw pngmono pnggray png16 png256
      png16m psmono psgray psrgb pswrite epswrite sgirgb t4693d2 t4693d4
      t4693d8 tek4696 tiffcrle tiffg3 tiffg32d tiffg4 tiff12nc tiff24nc tifflzw
      tiffpack x11 x11alpha x11cmyk x11cmyk2 x11cmyk4 x11cmyk8 x11gray2
      x11gray4 x11mono nullpage
    Search path:
      . : /usr/local/share/ghostscript/5.50 :
      /usr/local/share/ghostscript/fonts
    For more information, see /usr/local/share/ghostscript/5.50/doc/Use.htm.
    Report bugs to ghost@aladdin.com, using the form in Bug-form.htm.

      从这些简单的名字中很难判断那个设备对应于自己的打印机型号,为了找出正确的设备文件名,需要阅读Ghost script的文档device.txt,或者选择相近的设备名并反复尝试。如果万一找不到自己的文件名,也许要升级 Ghostscript的版本,或者更新自己Ghostscript的设备驱动之后再重新安装Ghostscript 。

  • 上一页  [1] [2] 


    上一篇:
  • 上一篇文章:
  • 下一篇
  • 下一篇文章: 没有了
  • 收藏此文到百度搜藏 百度搜藏| 新浪VIvi| 365key| Younote| 博采中心| 你好BLOG| 亿友网摘| 和讯网摘|
    相关文章    
    FreeBSD 6.2快速架设网站服务器教程
    FreeBSD系统硬盘分隔策略
    FreeBSD 架设FTP服务器
    FreeBSD 中 Samba Server安装设定
    FreeBSD下如何访问MS-DOS文件系统
    FreeBSD 中 Samba Server安装设定
    FreeBSD handbook中文版 3 Unix 基础
    FreeBSD handbook中文版 2 开始安装FreeBSD
    FreeBSD handbook中文版 1 整体介绍
    FREEBSD升级及优化全攻略
     
     
     
    最新文章
    普通文章 FreeBSD系统配置打印机方法最新文章
    普通文章 JavaScript事件驱动及事件处理最新文章
    普通文章 JavaScript窗口及输入输出最新文章
    普通文章 基于对象的JavaScript语言学习最新文章
    普通文章 Javascript制作旋转导航菜单效果最新文章
    普通文章 使用正则表达式进行xml数据验证最新文章
    普通文章 基于XML的购物车的实现最新文章
    普通文章 javascript+xml实现分页技巧最新文章
    普通文章 三种级别的DB2数据库字符集的设置最新文章
    普通文章 eMule电驴代理服务器作用讲解最新文章
     
    热门文章
    推荐文章 CorelDraw 表格制作终极方案
    推荐文章 Photoshop鼠绘水墨风格的精美荷花
    推荐文章 Fireworks网页界面综合设计实例详
    推荐文章 Oracle数据库配置中的常见错误代
     
     
    设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 

    版权所有2006-2008 龙腾教程网