CUPS >provides >a >portable >printing >layer >for > UNIX®-based >operating >systems. >It >has >been >developed > by >Easy >Software >Products> to >promote >a >standard >printing >solution >for >all > UNIX >vendors >and >users. >CUPS >provides >the >System > V >and >Berkeley >command-line >interfaces. >
CUPS >uses >the >Internet >Printing >Protocol >("IPP") > as >the >basis >for >managing >print >jobs >and > queues. >The >Line >Printer >Daemon >("LPD") >Server > Message >Block >("SMB"), >and >AppSocket >(a.k.a. > JetDirect) >protocols >are >also >supported >with >reduced > functionality. >CUPS >adds >network >printer >browsing >and > PostScript >Printer >Description >("PPD") >based >printing > options >to >support >real-world >printing >under >UNIX. >
CUPS >also >includes >a >customized >version >of >GNU > Ghostscript >(currently >based >off >GNU >Ghostscript > 5.50) >and >an >image >file >RIP >that >are >used >to > support >non-PostScript >printers. >Sample >drivers >for > HP >and >EPSON >printers >are >included >that >use > these >filters. >
The >following >CUPS >documentation >is >referenced >by > this >document: >
The >following >non-CUPS >documents >are >referenced >by > this >document: >
parallel:/dev/plp>
, > ipp://hostname/resource>
). >Backends >are >named >using >the >scheme >of >the > URI, >so >a >URI >of >"ipp://hostname/resource" >would > be >processed >by >the >"ipp" >backend. >
The >ipp >backend >sends >the >specified >job >to >a >
network >printer >or >host >using >the >Internet >
Printing >Protocol. > The >URI >is >as >specified >by >
the >printer-uri-supported>
attribute >from >the >
printer >or >host. >
The >lpd >backend >sends >the >specified >job >to >a > network >printer >or >host >using >the >Line >Printer > Daemon >protocol. > The >URI >is >of >the >form: >
lpd://hostname/queue >
The >parallel >backend >sends >the >specified >job >to > a >local >printer >connected >via >the >specified > parallel >port >device. > The >URI >is >of >the >form: >
parallel:/dev/file >
The >serial >backend >sends >the >specified >job >to > a >local >printer >connected >via >the >specified >serial > port >device. > The >URI >is >of >the >form: >
serial:/dev/file?option[+option+...] >The >options >can >be >any >combination >of >the > following: >
baud=>rate>
- >Sets >the >baud >
rate >for >the >device. >bits=>7 >or >8>
- >Sets >the >
number >of >data >bits. >parity=>even>
- >Sets >even >parity >
checking. >parity=>odd>
- >Sets >odd >parity >
checking. >parity=>none>
- >Turns >parity >
checking >off. >flow=dtrdsr>
- >Turns >DTR/DSR >
(hardware) >flow > control >on. >flow=hard>
- >Turns >RTS/CTS >
(hardware) >flow >control >on. >flow=none>
- >Turns >flow >control >
off. >flow=rtscts>
- >Turns >RTS/CTS >
(hardware) >flow >control >on. >flow=xonxoff>
- >Turns >XON/XOFF >
(software) >flow >control >on. >The >socket >backend >sends >the >specified >job >to > a >network >host >using >the >AppSocket >protocol > commonly >used >by >Hewlett-Packard >and >Tektronix > printers. > The >URI >is >of >the >form: >
socket://hostname[:port] >The >default >port >number >is >9100. >
The >usb >backend >sends >the >specified >job >to >a > local >printer >connected >via >the >specified >usb >port > device. > The >URI >is >of >the >form: >
usb:/dev/file >
The >Berkeley >commands >provide >a >simple > command-line >interface >to >CUPS >to >submit >and > control >print >jobs. >It >is >provided >for > compatibility >with >existing >software >that >is > hardcoded >to >use >the >Berkeley >commands. >
The >lpq >command >shows >the >current >queue >status. >
The >lpr >command >submits >a >job >for >printing. > The >CUPS >version >of >lpr >silently >ignores >the > "i", >"t", >"m", >"h", >and >"s" >options. >
The >lprm >removes >one >or >more >print >jobs. >
The >Common >Gateway >Interface >(CGI) >programs > provide >a >web-based >status >interface >to >monitor > the >status >of >printers, >classes, >and >jobs. >Each > of >the >CGIs >utilize >HTML >template >files >that > can >be >customized >to >provide >alternate >appearances. >
The >admin >CGI >provides >administration >interfaces > for >printers >and >classes. >The >user >can >add, > modify, >delete, >start, >stop, >and >configure >printers > and >classes >using >"wizard" >interfaces. >
The >classes >CGI >lists >the >available >printer > classes >and >any >pending >jobs >for >the >class. > The >user >can >click >on >individual >classes >to > limit >the >display >and >click >on >jobs >to >see > the >job >status. >
The >jobs >CGI >lists >the >queued >print >jobs >in > order >of >priority. > The >list >can >be >limited >by > printer >or >job. >
The >printers >CGI >lists >the >available >printer > queues >and >any >pending >jobs >for >the >printer. > The >user >can >click >on >individual >printers >to > limit >the >display >and >click >on >jobs >to >see > the >job >status. >
The >CUPS >Application >Programmers >Interface >("API") > provides >common >convenience, >HTTP, >IPP, >language, >and > PPD >functions >used >by >the >CUPS >software. >
Convenience >functions >are >provided >to >submit >an > IPP >request, >send >a >print >file, >cancel >a >job, > get >a >list >of >available >printers, >get >a >list > of >available >classes, >get >the >default >printer >or > class, >get >the >default >server >name, >get >the > local >username, >and >get >a >password >string. >
The >HTTP >functions >provide >functions >to >connect > to >HTTP >servers, >issue >requests, >read >data >from > a >server, >and >write >data >to >a >server. >
The >IPP >function >provide >functions >to >manage > IPP >request >data >and >attributes, >read >IPP > responses >from >a >server, >and >write >IPP >requests > to >a >server. >
The >language >functions >provide >a >standard > interface >for >retrieving >common >textual >messages >for > a >particular >locale >and >determining >the >correct > encoding >(e.g. >US >ASCII, >UTF-8, >ISO-8859-1, >etc.) >
The >PostScript >Printer >Description >functions >manage > PPD >files, >select >options, >check >for >option > conflicts, >and >emit >selected >options >in >the > correct >order. >
The >CUPS >imaging >library >provides >colorspace > conversion, >color >management, >image >management, >scaling, > image >file, >and >raster >functions >used >by >the > CUPS >raster >filters. >
The >colorspace >conversion >functions >handle >conversion > of >grayscale >and >RGB >colors >to >grayscale, >RGB, > K, >CMY, >CMYK, >and >CMYKcm >colorspaces. >
The >color >management >functions >handle >gamut > mapping >and >density >correction. >These >are >integrated > with >the >colorspace >conversion >functions >so >that > colorspace >conversion >and >color >management >are > processed >in >a >single >step. >
The >image >management >functions >manage >a >tiled > image >database >that >is >swapped >to/from >disk >as > needed. >
The >scaling >functions >provide >image >scaling > services >using >nearest-neighbor >sampling >and >bilinear > interpolation >as >appropriate. >
The >image >file >functions >handle >loading >of >all > image >file >formats. >
The >raster >functions >manage >streams >of >CUPS > raster >data >(described >in >the >Interface >Design > Document) >used >by >non-PostScript >printer >drivers >and > raster >filters. >
The >daemons >provide >additional >network >functions > for >the >scheduler. >Currently >only >two >daemons >are > provided >with >CUPS. >
The >line >printer >daemon >provides >remote >LPD >
client >support >and >is >run >by >the >inetd(8)>
daemon >as >needed. >
The >polling >daemon >is >used >to >poll >a >remote > server >for >a >list >of >available >printers >and > provide >it >to >the >scheduler >for >addition. >A > separate >polling >daemon >is >run >by >the >scheduler > for >every >remote >system >listed >for >polling >in > the >scheduler >configuration >file. >
The >filters >implement >file >conversion >services >for > CUPS. >All >filters >are >called >with >a >common >set > of >arguments: >
Filters >are >added >to >the >MIME >conversion >data > file >and >implement >all >necessary >conversions >from > one >file >type >to >another. >
The >hpgltops >filter >converts >HP-GL/2 >files >into > PostScript. >
The >imagetops >filter >converts >image >files >into > PostScript. >
The >imagetoraster >filter >converts >image >files >into > CUPS >raster >data. >
The >pdftops >filter >converts >PDF >files >into > PostScript. >
The >pstops >filter >inserts >printer-specific >commands > from >PPD >files >and >performs >page >filtering >as > requested >by >the >user. >
The >pstoraster >filter >converts >PostScript >program > data >into >CUPS >raster >data. >
The >rastertoepson >filter >handles >converting >CUPS > raster >data >to >ESC/P >and >supports >both >color > and >black-and-white >printers. >
The >rastertohp >filter >handles >converting >CUPS > raster >data >to >HP-PCL >and >supports >both >color > and >black-and-white >printers. >
The >texttops >filter >converts >text >files >into > PostScript. >
The >scheduler >is >a >fully-functional >HTTP/1.1 >and > IPP/1.1 >server >that >manages >the >printers, >classes, > and >jobs >in >the >system. > It >also >handles >a > simple >broadcast-based >directory >service >so >that > remote >print >queues >and >classes >can >be >accessed > transparently >from >the >local >system. >
The >authorization >module >is >responsible >for > performing >access >control >and >authentication >for >all > HTTP >and >IPP >requests >entering >the >system. >
The >classes >module >is >responsible >for >managing > printer >classes >in >the >system. >Each >class >is >a > collection >of >local >and/or >remote >printers. > The > classes >module >also >reads >and >writes >the >classes > configuration >file. >
The >client >module >is >responsible >for >all >HTTP > client >communications. > It >handles >listening >on > selected >interfaces, >accepting >connections >from > prospective >clients, >processing >incoming >HTTP >requests, > and >sending >HTTP >responses >to >those >requests. > The > client >module >also >is >responsible >for >executing > the >external >CGI >programs >as >needed >to >support > web-based >printer, >class, >and >job >status >monitoring > and >administration. >
Once >authorized, >all >IPP >requests >are >sent >to > the >IPP >module. >
The >configuration >module >is >responsible >for > reading >the >CUPS >configuration >file >and >initializing > the >appropriate >data >structures >and >values. > The > configuration >module >also >stops >CUPS >services >before > reading >the >configuration >file >and >restarts >them > after >the >configuration >file >has >been >read. >
The >devices >module >is >responsible >for >managing > the >list >of >available >devices >for >the > CUPS-Get-Devices >operation. >
The >directory >services >module >sends >and >recieves > printer >state >information >over >a >broadcast >socket. > Remote >printers >and >classes >are >automatically >added > to >or >removed >from >the >local >printer >and >class > lists >as >needed. >
The >directory >services >module >can >only >recieve > printer >state >information >over >a >single >UDP >port, > however >it >can >broadcast >to >multiple >addresses >and > ports >as >needed. >
The >IPP >module >handles >IPP >requests >and >acts > accordingly. > URI >validation >is >also >performed >here, > as >a >client >can >post >IPP >data >to >any >URI > on >the >server >which >might >sidestep >the >access > control >or >authentication >of >the >HTTP >server. >
The >jobs >module >manages >print >jobs, >starts > filter >and >backend >processes >for >jobs >to >be > printed, >and >monitors >status >messages >from >those > filters >and >backends. >
The >logging >module >manages >the >access, >error, > and >page >log >files >that >are >generated >by >the > scheduler. >
The >main >module >is >responsible >for >timing >out >
and >dispatching >input >and >output >for >client >
connections. > It >also >watches >for >incoming >
SIGHUP>
and >SIGCHLD>
signals, >reloads >
the >server >configuration >files >as >needed, >and >
handles >child >process >errors >and >exits. >
The >Multimedia >Internet >Mail >Exchange >module > manages >a >MIME >type >and >conversion >database >that > supports >file >typing >by >extension >and >content >and > least-cost >file >filtering >from >a >source >to >a > destination >file >type. >
The >PPDs >module >is >responsible >for >managing >the > list >of >available >PPD >files >for >the >CUPS-Get-PPDs > operation. >
The >printers >module >is >responsible >for >managing > printers >and >PPD >files >in >the >system. >The > printers >module >also >reads >and >writes >the >printers > configuration >file. >
The >System >V >commands >provide >a >robust > command-line >interface >to >CUPS >to >submit >and > control >printers >and >jobs. >
The >accept >command >tells >the >scheduler >to > accept >new >jobs >for >specific >printers. >
The >cancel >command >tells >the >scheduler >to > cancel >one >or >more >jobs >that >are >queued >for > printing. >
The >disable >command >tells >the >scheduler >to >stop > printing >jobs >on >the >specified >printers. >
The >enable >command >tells >the >scheduler >to >start > printing >jobs >on >the >specified >printers. >
The >lp >command >submits >submits >files >for > printing. > Unlike >the >standard >System >V >lp > command, >a >single >CUPS >lp >command >will >generate > a >separate >job >ID >for >each >file >that >is > printed. >Also, >the >Solaris >"f", >"H", >"P", >"S", > and >"y" >options >are >silently >ignored. >
The >lpadmin >command >manages >printer >queues >and > classes. > The >Solaris >"A", >"F", >"I", >"M", >"P", > "Q", >"S", >"T", >"U", >"W", >"f", >"l", >"m", >"o", > "s", >"t", >and >"u" >options >are >not >supported, > and >new >options >"P" >(PPD >file) >and >"E" >(enable > and >accept) >are >provided >to >configure >CUPS-specific > features. >
The >lpinfo >command >lists >the >available >PPD > files >or >devices >as >selected >by >the >user. >
The >lpmove >command >moves >a >print >job >to >a > new >destination. >
The >lpoptions >command >manages >user-defined >printers > and >options. >
The >lpstat >command >lists >printers, >classes, >and > jobs >as >requested >by >the >user. >
The >reject >command >tells >the >scheduler >not >to > accept >new >jobs >for >specific >printers. >