昨天研究了一下关于在Linux下实现打印操作的相关内容,整理记录如下:

1.什么是CUPS

CUPS(Common UNIX Printing System,即通用Unix打印系统)是FedoraCore3中支持的打印系统,它主要是使用IPP(Internet PrintingProtocol)来管理打印工作及队列,但同时也支持”LPD”(Line Printer Daemon)和”SMB”(ServerMessage Block)以及Socket等通信协议。

在Unix/Linux发展之初,打印总是会受到各种各样的限制,最初的打印都是用LPD(命令行方式的打印守护程序)来实现的,它不支持IPP(Internet打印协议),而且也不支持同时使用多个打印设备。而CUPS的出现,提供了一套完整的管理打印设备、实现可靠打印、网络打印的一套完整方案。此外,在Linux下进行CUPS驱动开发是遵循GPL协议规定的,也就是说必须开源。

CUPS实际上是一个集成的服务。包括了前端接收打印命令的相关程序,后端控制打印机硬件的程序,中间则是打印驱动。首先来看看CUPS驱动打印机的方式。当CUPS接受到打印命令时,首先会进行一个格式的预转换,比如将.jpg等各种文件先转换成PostScript格式,然后进一步将PostScript格式转换成 CUPS内部格式,这个称为PostScript到PostScript转换,这两种格式还是有区别的,网上能找到更为详细的说明文件,这里我们不去深究它。

但需要知道的是一般的打印机并不能直接只是PostScript格式的信息,所以在使用过程中我们还需要安装一类解释性的驱动,让CUPS能通过这类驱动将信息转换成一般打印机能识别的信息,现在使用的最多的这类驱动名叫GhostScript。有了这个驱动还不够,我们还需要foomatic来连接CUPS和GhostScript,它是一个脚本程序(用perl写的),用来打包各种不同格式的打印机命令,有了这些基础我们就可以开始安装和配置整套的CUPS打印系统了。

2.CUPS的安装及打印机的配置

首先我们要对CUPS进行安装,这里以Ubuntu为例:

sudo aptitude install cupsys cupsys-client

这里使用aptitude是因为在ubuntu中,aptitude比apt-get在处理包依赖上面更有优势,比如在实现remove操作的时候,使用aptitude能够提供多套解除包依赖的方案供操作者选择。

然后安装GhostScript和foomatic:

 sudo aptitude install ghostscript

    sudo aptitude install foomatic

其他系统的用户也可以访问官网http://www.cups.org/下载对应的源码包自行编译安装。对于ghostscript一般来说可以支持大多数的打印机了,如果有特殊的打印机不能够支持,可以到http://www.openprinting.org/下载更多的驱动程序。

这样安装部分就已经完成了,接下来进行配置:

首先在浏览器输入localhost:631,从本地631端口进入打印机配置系统。

cups的配置文件位置为/etc/cups/cupsd.conf 打开可以在里面进行一些设置,比如更改侦听端口或添加新的端口等:

Listen localhost:631

#本地监听地址

Listen /var/run/cups/cups.sock

#默认的监听端口

Listen 192.168.1.3:631

#自行添加的监听端口

配置文件里也可以对打印机网络状态及安全性管理进行设置,这里不再详述。配置好这些内容之后就可以添加打印机了,我们进入本地web管理页面,点击Administation,在里面找到add printer,按照提示选择机器型号、链接端口类型等。

只是在设置Name的时候要注意,这个名字会影响到命令行操作,所以尽量简短好记吧。一切选择妥当之后可以点击打印测试页看设置是否成功。

3.CUPS打印指令简介

    详细的指令集可以参照官网帮助文档http://www.cups.org/documentation.php/doc-2.0/options.html,或者使用linux里的man指令,这里只记录一些常用的。

lp filename: 最常用的,调用默认打印机和默认配置对文件进行打印

lpstat -p -d:输出当前各个打印机的工作状态,并且显示目前的默认打印机是哪个

lpoptions  -d printername:更改默认打印机为指定打印机

cancel job-id/-a:CUPS打印系统会对每一个打印任务进行编号,使用cancel指令可以中止某一个任务,或者接-a终止全部

lpmove job-id destination-printer:将某个任务移动到另外一台打印机

lp -o [...]  打印方式设置,方框里面可接的内容非常丰富:

lp -o media=Letter filename: US Letter (8.5×11 inches, or 216x279mm)

lp -o media=Legal filename:US Legal (8.5×14 inches, or 216x356mm)

全部模板及尺寸如下:

  • Letter- US Letter (8.5×11 inches, or 216x279mm)
  • Legal- US Legal (8.5×14 inches, or 216x356mm)
  • A4- ISO A4 (8.27×11.69 inches, or 210x297mm)
  • COM10- US #10 Envelope (9.5×4.125 inches, or
    241x105mm)
  • DL- ISO DL Envelope (8.66×4.33 inches, or 220x110mm)
  • Transparency- Transparency media type or source
  • Upper- Upper paper tray
  • Lower- Lower paper tray
  • MultiPurpose- Multi-purpose paper tray
  • LargeCapacity- Large capacity paper tray

也可以自定义尺寸,比如想输出照片6寸(15.2cmx10.2cm) 只需要输入指令lp -o media=Custom.15.2×10.2cm filename即可

lp -o landscape filename :打印成横版

lp -o orientation-requested=N:设置旋转方向,其中:

  • -o orientation-requested=3- 不旋转
  • -o orientation-requested=4- 顺时针旋转90°
  • -o orientation-requested=5- 逆时针旋转90°
  • -o orientation-requested=6- 旋转180°

lp -o sides=two-sided-short-edge filename :打印双面横版

lp -o sides=two-sided-long-edge filename:打印双面竖版

其中默认输出是单面,即one-sided

lp -o page-set=odd filename :只打印奇数页

lp -o page-set=even filename :只打印偶数页

其中默认是打印到所有页上

这里只记录的常用的指令,其他的指令可以自行查阅网站说明

首发于个人技术博客:http://www.xgezhang.com/linux_cups.html

欢迎转载,请注明出处

Linux下通用打印系统CUPS使用教程相关推荐

  1. linux cups工作原理,Linux打印系统CUPS原理分析

    二.通用Unix打印系统(CUPS) 2.1 CUPS简介 CUPS使用的是IPP(网络打印协议)标准,这是从HTTP中衍生出来的IETF协议.CUPS后台程序可以接受IPP请求,并且将其作为和客户端 ...

  2. linux使用佳能ip1188,在Linux下安装打印驱动,以佳能LBP2900+为例

    相较于在Windows下安装打印驱动程序,在linux下安装打印驱动程序要复杂一些,不过安装成功后,打印驱动比在Windows下稳定,不会出现让人迷惑无从下手的问题,这正是linux系统相比于wind ...

  3. Linux下通用线程池的创建与使用

    Linux下通用线程池的创建与使用 本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关.另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整 ...

  4. Linux下通用的Makefile

    Linux下通用的Makefile 我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c/.cpp的源文件.如果我们用gcc/g++去一个一个编译 ...

  5. linux下上传系统中文件到gitHub

    linux下上传系统中文件到gitHub 一: 1系统下生成公钥 #ssh-keygen 一路回车即可 2对公钥进行复制 #cat .shh/id_rsa.pub 3将公钥复制到github中 首先要 ...

  6. Linux中文件写保护,Linux_在Linux下创建写保护的文件的教程,假如你想对Linux中的一些重要 - phpStudy...

    在Linux下创建写保护的文件的教程 假如你想对Linux中的一些重要文件做写保护,这样它们就不能被删除或者被篡改成之前的版本或者其他东西,或者在其他情况下,你可能想避免某些配置文件被软件自动修改.使 ...

  7. Windows和Linux下通用的线程接口

    对于多线程开发,Linux下有pthread线程库,使用起来比较方便,而Windows没有,对于涉及到多线程的跨平台代码开发,会带来不便.这里参考网络上的一些文章,整理了在Windows和Linux下 ...

  8. Linux下使用Speedtest测试网速教程

    Linux下使用Speedtest测试网速教程 文章目录: 一.通过Speedtest官网直接测试网络速度 二.通过下载源码,在命令行中测试网速 1.下载安装 2.Speedtest的参数使用: 有时 ...

  9. linux添加nginx,linux下安装Nginx1.16.0的教程详解

    因为最近在倒腾linux,想安装新版本的nginx,找了一圈教程没有找到对应的教程,在稍微倒腾了一会之后终于成功的安装了最新版. 服务器环境为centos,接下来是详细步骤: 安装必要依赖插件 ? 创 ...

  10. Multi-thread--Windows和Linux下通用的线程接口

    对于多线程开发,Linux下有pthread线程库,使用起来比较方便,而Windows没有,对于涉及到多线程的跨平台代码开发,会带来不便.这里参考网络上的一些文章,整理了在Windows和Linux下 ...

最新文章

  1. matlab中if语句的用法_if语句的基本用法
  2. 人造卫星为什么会绕着地球转而不是停在太空中或者越飞越远.掉进地球的卫星为什么烧不完....
  3. centos7 安装mysql8
  4. 【转】Qt串口通信专题教程
  5. vue.js学习资源大全
  6. matlab fspeical,MATLAB数字图像处理.doc
  7. 弹性计算安全组最佳实践及新特性介绍
  8. quartus频率计 时钟设置_基于QuartusII的两种数字频率计的设计与比较
  9. ps-通道+高低频磨皮去斑
  10. 《数据安全法》施行在即,政企单位如何构建数据安全治理体系?
  11. 苹果官网iPad mini滚动动画实现原理探究
  12. nuc10fnh寒霜峡谷linux,英特尔(Intel)寒霜峡谷NUC10i5FNH使用体验
  13. 自然语言处理(NLP):08 TextCNN在短文本分类应用介绍
  14. JavaWeb重点笔记
  15. php里用钢笔画曲线,ps钢笔工具怎么画图
  16. BeagleboneBlack上u-boot的MLO文件是哪里来的
  17. 漫谈程序员系列:你的幸运女神呢
  18. 【解决方案】STM32L152单片机驱动段码LCD屏,执行HAL_LCD_Init函数失败返回HAL_TIMEOUT,长时间卡在LCD_FLAG_RDY的while循环里面的解决办法
  19. Neat Reader安装使用
  20. idea中如何添加Tomcat镜像并配置项目

热门文章

  1. win98老机子安装linux,在win98下怎么安装linux?
  2. 平面设计中的网格系统pdf_哪些设计师必看平面设计书籍,写给设计师
  3. python暴力破解
  4. 最好用的杀毒软件avast!antivirus加免费注册码!
  5. Java入门电子书百度网盘下载,附面试答案
  6. MATLAB2020安装教程
  7. JAVA-jdk8的API文件下载
  8. python基于高德地图坐标拾取系统获取地址坐标
  9. 电脑画图和计算机不见了,电脑中自带的Window画图工具不见了如何恢复
  10. 利用迅捷PDF分割器实现PDF文档的批量拆分