查看: 4142|回复: 0

[教程] Linux全平台cups打印服务器安装教程

[复制链接]
发表于 2020-10-10 11:04:42 | 显示全部楼层 |阅读模式
本教程适用于MIPS/ARM/ASIC/RSIC/X86/AMD64平台,适用于各种开发板,主机

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/Debian实例
    sudo aptitude install cupsys cupsys-client
    这里使用aptitude是因为在ubuntu中,aptitude比apt-get在处理包依赖上面更有优势,比如在实现remove操作的时候,使用aptitude能够提供多套解除包依赖的方案供操作者选择。
    然后安装GhostScript和foomatic:
    sudo aptitude install ghostscript
    sudo aptitude install foomatic
    其他系统的用户也可以访问官网[url=]链接地址[/url]下载对应的源码包自行编译安装。对于ghostscript一般来说可以支持大多数的打印机了,如果有特殊的打印机不能够支持,可以到[url=]链接地址[/url]下载更多的驱动程序。
    这样安装部分就已经完成了,接下来进行配置:
    首先在浏览器输入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打印指令简介
    详细的指令集可以参照官网帮助文档[url=]链接地址[/url],或者使用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 :只打印偶数页



Centos实例

在/usr目录下新建Downloads文件夹

mkdir /usr/Downloads

下载HP1020打印机驱动(http://foo2zjs.rkkda.com/

wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz

有的系统中没有安装wget,则需要

yum install -y wget

解压

tar zxf foo2zjs.tar.gz

将文件夹移动至目录/opt下

mv foo2zjs /opt

切换至foo2zjs

cd /opt/foo2zjs

编译驱动文件

make

有的系统中没有安装gcc,提示无法编译,则需要

yum install -y gcc

获取HP1210固件包

./getweb 1020

安装驱动

make install

这是可能会报错,提示缺少foomatic-rip

直接安装foomatic-rip提示没有找到,折腾了好久发现安装foomatic就可以

yum install -y foomatic

再次编译,编译完成。

HP1020需要执行下一步,尽管我也不知道为什么。

make install-hotplug

使用cups的话还需要执行下一步

make cups安装及配置cups

安装cups

yum install -y cups

启动cups

service cups start

确保防火墙已经放通631端口



  • firewall-cmd --permanent --add-port=631/tcp



  • service firewalld restart


这时候是无法从局域网内访问cups的,原因是因为cups的配置只允许本地访问。

这时候需要编辑cups的配置文件

vi /etc/cups/cupsd.conf

将Listen 改为0.0.0.0:631

在如图位置添加Allow From All

重启cups

service cups restart


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|万由科技 ( 浙ICP备10004788号-13 )

GMT+8, 2024-4-19 04:32 , Processed in 0.057140 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表