diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 235 |
1 files changed, 203 insertions, 32 deletions
@@ -1,4 +1,4 @@ -README - OpenPrinting CUPS Filters v1.0.25 - 2012-11-28 +README - OpenPrinting CUPS Filters v1.0.36 - 2013-08-13 ------------------------------------------------------- Looking for compile instructions? Read the file "INSTALL.txt" @@ -7,28 +7,32 @@ instead... INTRODUCTION - CUPS is a standards-based, open source printing system developed by Apple - Inc. for Mac OS® X and other UNIX®-like operating systems. CUPS uses the - Internet Printing Protocol ("IPP") and provides System V and Berkeley - command-line interfaces, a web interface, and a C API to manage printers and - print jobs. - - This distribution contains backends, filters, and other software that was - once part of the core CUPS distribution but is no longer maintained by - Apple Inc. In addition it contains additional filters developed - independently of Apple, especially filters for the PDF-centric printing - workflow introduced by OpenPrinting. - - From CUPS 1.6.0 on, this package will be required for using printer drivers - with CUPS under Linux. With CUPS 1.5.x and earlier this package can be used - optionally to switch over to PDF-based printing. In that case some filters - are provided by both CUPS and this package. Then the filters of this package - should be used. - - For compiling and using this package CUPS, Poppler, libjpeg, libpng, - libtiff, libijs, freetype, fontconfig, and liblcms (liblcms2 recommended) - are needed. It is highly recommended, especially if non-PostScript printers - are used, to have Ghostscript, foomatic-filters, and foomatic-db installed. + CUPS is a standards-based, open source printing system developed + by Apple Inc. for Mac OS® X and other UNIX®-like operating + systems. CUPS uses the Internet Printing Protocol ("IPP") and + provides System V and Berkeley command-line interfaces, a web + interface, and a C API to manage printers and print jobs. + + This distribution contains backends, filters, and other software + that was once part of the core CUPS distribution but is no longer + maintained by Apple Inc. In addition it contains additional + filters and software developed independently of Apple, especially + filters for the PDF-centric printing workflow introduced by + OpenPrinting and a daemon to browse Bonjour broadcasts of remote + CUPS printers and makes these printers available locally. + + From CUPS 1.6.0 on, this package is required for using printer + drivers with CUPS under Linux. With CUPS 1.5.x and earlier this + package can be used optionally to switch over to PDF-based + printing. In that case some filters are provided by both CUPS and + this package. Then the filters of this package should be used. + + For compiling and using this package CUPS, Poppler, libjpeg, + libpng, libtiff, libijs, freetype, fontconfig, liblcms (liblcms2 + recommended), libavahi-common, and libavahi-client are needed. It + is highly recommended, especially if non-PostScript printers are + used, to have Ghostscript, foomatic-filters, and foomatic-db + installed. CUPS, this package, and Ghostscript contain some rudimentary printer drivers, see http://www.openprinting.org/drivers/ for a more @@ -51,7 +55,7 @@ INTRODUCTION IMAGE PRINTING DEFAULT CHANGED TO "SCALE TO FIT" Compared to the PostScript-based original CUPS filters there is a - change of deafults: The imagetopdf and imagetoraster filters print + change of defaults: The imagetopdf and imagetoraster filters print in "scale-to-fit" mode (image is scaled to fill one page but nothing of the image being cut off) by default. @@ -88,18 +92,26 @@ POSTSCRIPT PRINTING RENDERER AND RESOLUTION SELECTION Therefore there are two possibilities to configure pdftops at runtime: - 1. Selection of the renderer: Ghostscript, Poppler, or Adobe Reader + 1. Selection of the renderer: Ghostscript, Poppler, pdftocairo, or + Adobe Reader Ghostscript has better color management and is generally optimized more for printing. Poppler produces a PostScript which is compatible with more buggy built-in PostScript interpreters of printers and it leads to a somewhat quicker workflow when graphical structures of the input PDF has to be turned into - bitmaps. Adobe Reader is the PDF renderer from Adobe, the ones - who created PDF and PostScript. + bitmaps. Adobe Reader is the PDF renderer from Adobe, the ones who + created PDF and PostScript. pdftocairo is a good choice for the + PDF output of Cairo (for example when printing from evince). It + is less resource-consuming when rasterizing graphical elements + which cannot be represented in PostScript (like + transparency). Note that pdftocairo only supports PDF input using + DeviceRGB, DeviceGray, RGB or sGray and is not capable of + generating PostScript level 1. So its support is only experimental + and distributions should not choose it as default. The selection is done by the "pdftops-renderer" option, setting it - to "gs", "pdftops", or "acroread": + to "gs", "pdftops", "pdftocairo", or "acroread": Per-job: lpr -o pdftops-renderer=pdftops ... Per-queue default: lpadmin -p printer -o pdftops-renderer-default=gs @@ -164,6 +176,154 @@ POSTSCRIPT PRINTING DEBUG MODE This option does not change anything if Poppler's pdftops is used as renderer. +HELPER DAEMON FOR BROWSING REMOTE CUPS PRINTERS + + From version 1.6.0 on in CUPS the CUPS broadcasting/browsing + facility was dropped, in favour of Bonjour-based broadcasting of + shared printers. This is done as Bonjour broadcasting of shared + printers is a standard, established by the PWG (Printing Working + Group, http://www.pwg.org/), and most other network services + (shared file systems, shared media files/streams, remote desktop + services, ...) are also broadcasted via Bonjour. + + Problem is that CUPS only broadcasts its shared printers but does + not browse broadcasts of other CUPS servers to make the shared + remote printers available locally without any configuration + efforts. This is a regression compared to the old CUPS + broadcasting/browsing. The intention of CUPS upstream is that the + application's print dialogs browse the Bonjour broadcasts as an + AirPrint-capable iPhone does, but it will take its time until all + toolkit developers add the needed functionality, and programs + using old toolkits or no toolkits at all, or the command line stay + uncovered. + + The solution is cups-browsed, a helper daemon running in parallel + to the CUPS daemon which listens to Bonjour broadcasts of shared + CUPS printers on remote machines in the local network via Avahi, + and can also listen for (and send) CUPS Browsing broadcasts. For + each reported remote printer it creates a local raw queue pointing + to the remote printer so that the printer appears in local print + dialogs and is also available for printing via the command + line. As with the former CUPS broadcasting/browsing with this + queue the driver on the server is used and the local print dialogs + give access to all options of the server-side printer driver. + + Note that CUPS broadcasting/browsing is available for legacy + support, to let the local CUPS daemon work seamlessly together + with remote CUPS daemons of version 1.5.x and older which only + support CUPS broadcasting/browsing. In networks with only CUPS + 1.6.x servers (or Ubuntu or Fedora/Red Hat servers with CUPS + 1.5.x) please use the native Bonjour broadcasting of your servers + and cups-browsed, configured for Bonjour browsing only on the + clients. + + Also high availability with redundant print servers is + supported. If there is more than one server providing a shared + print queue with the same name, cups-browsed uses the first queue + which appeared and if this queue disappears, cups-browsed + seamlessly switches to the queue of another server. Unfortunately, + load-balancing (what CUPS did via implicit classes) is not + possible with cups-browsed. + + For maximum security cups-browsed uses IPPS (encrypted IPP) + whenever possible. + + The configuration file for cups-browsed is + /etc/cups/cups-browsed.conf. This file can include limited forms + of the original CUPS BrowseRemoteProtocols, BrowseLocalProtocols, + BrowsePoll, and BrowseAllow directives. + + Note that cups-browsed does not work with remote CUPS servers + specified by a client.conf file. It always connects to the local + CUPS daemon by setting the CUPS_SERVER environment variable and so + overriding client.conf. If your local CUPS daemon uses a + non-standard domain socket as only way of access, you need to + specify it via the DomainSocket directive in + /etc/cups/cups-browsed.conf. + + The "make install" process installs init scripts which make the + daemon automatically started during boot. You can also manually + start it with (as root): + + /usr/sbin/cups-browsed & + + or in debug mode with + + /usr/sbin/cups-browsed --debug + + Shut it down by sending signal 2 (SIGINT) or 15 (SIGTERM) to + it. The queues which it has created get removed then (except a + queue set as system default, to not loose its system default + state). + + Here is some info on how cups-browsed works internally (first concept of a + daemon which does only Bonjour browsing): + + - Daemon start + o Wait for CUPS daemon if it is not running + o Read out all CUPS queues created by this daemon (in former sessions) + o Mark them unconfirmed and set timeout 10 sec from now + - Main loop (use avahi_simple_poll_iterate() to do queue list maintenance + regularly) + o Event: New printer shows up + + Queue for printer is already created by this daemon -> Mark list + entry confirmed, if discovered printer is ipps but existing queue ipp, + upgrade existing queue by setting URI to ipps. Set status to + to-be-created and timeout to now-1 sec to make the CUPS queue be + updated. + + Queue does not yet exist -> Mark as to-be-created and set + timeout to now-1 sec. + o Event: A printer disappears + + If we have listed a queue for it, mark the entry as disappeared, set + timeout to now-1 sec + o On any of the above events and every 2 sec + + Check through list of our listed queues + - If queue is unconfirmed and timeout has passed, mark it as + disappeared, set timeout to now-1 sec + - If queue is marked disappered and timeout has passed, check whether + there are still jobs in it, if yes, set timeout to 10 sec from now, + if no, remove the CUPS queue and the queue entry in our list. If + removal fails, set timeout to 10 sec. + - If queue is to-be-created, create it, if succeeded set to + confirmed, if not, set timeout to 10 sec fron now. printer-is-shared + must be set to false. + - Daemon shutdown + o Remove all CUPS queues in our list, as long as they do not have jobs. + + Do not overwrite existing queues which are not created by us If + the simple <remote_printer> name is already taken, try to create a + <remote_printer>@<server> name, if this is also taken, ignore the + remote printer. Do not retry, to avoid polling CUPS all the time. + + Do not remove queues which are not created by us. We do this by + listing only our queues and remove only listed queues. + + Queue names: Use the name of the remote queue. If a queue with the + same name from another server already exists, mark the new queue + as duplicate and when a queue disappears, check whether it has + duplicates and change the URI of the disappeared queue to the URI + of the first duplicate, mark the queue as to-be-created with + timeout now-1 sec (to update the URI of the CUPS queue) and mark + the duplicate ddisappeared with timeout now-1 sec. In terms of + high availability we replace the old load balancing of the + implicit class by a failover solution. Alternatively (not + implemented), if queue with same name but from other server + appears, create new queue as <original name>@<server name without + .local>. When queue with simple name is removed, replace the first + of the others by one with simple name (mark old queue disappeared + with timeout now-1 sec and create new queue with simple name). + + Fill description of the created CUPS queue with the Bonjour + service name (= original description) and location with the server + name without .local. + + stderr messages only in debug mode (command line options: + "--debug" or "-d" or "-v"). + + Queue identified as from this daemon by doing the equivalent of + "lpadmin -p printer -o cups-browsed-default", this generates a + "cups-browsed" attribute in printers.conf with value "true". + CUPS FILTERS FOR PDF AS STANDARD PRINT JOB FORMAT Here is documentation from the former CUPS add-on tarball with the filters @@ -183,7 +343,9 @@ CUPS FILTERS FOR PDF AS STANDARD PRINT JOB FORMAT below) as the ...tops filter calls the ....topdf filter plus Ghostscript's pdf2ps. + IMAGETOPDF +========== 1. INTRODUCTION @@ -280,7 +442,7 @@ the followings option settings in a PPD file. Collate: If Collate is defined, "imagetopdf" judges the printer supports Collate. Copies: - If cupsManualCopies is defined as False, "imagetopdf" judges the printer + If cupsManualCopies is defined as True, "imagetopdf" judges the printer does not support Copies feature. Duplex: @@ -468,9 +630,11 @@ in the location specified by TMPDIR environment variable. Default location is "/tmp". -PDFTOPDF.OLD +PDFTOPDF (OLD) +============== 0. DEPRECATION NOTICE + This filter is being replaced by a new implementation that does not depend on poppler. Therefore it has been renamed "pdftopdf.old", but the references in the following sections have not been updated. @@ -553,7 +717,7 @@ CUPS option are defined by pairs of key and value, <key>=<value>. "pdftopdf" accepts the following CUPS standard options; -fiplot +fitplot mirror PageSize page-left, page-right, page-bottom, page-top @@ -626,7 +790,7 @@ the followings option settings in a PPD file. Collate: If Collate is defined, "pdftopdf" judges the printer supports Collate. Copies: - If cupsManualCopies is defined as False, "pdftopdf" judges the printer + If cupsManualCopies is defined as True, "pdftopdf" judges the printer does not support Copies feature. Duplex: If Duplex is defined, "pdftopdf" judges the printer supports Duplex. @@ -842,6 +1006,7 @@ in the location specified by TMPDIR environment variable. Default location is "/tmp". PDFTOPDF -- new implementation +=============================== A new implementation of the pdftopdf filter is available. It depends on libqpdf to read/write pdf files. @@ -863,7 +1028,9 @@ Known issues - more testing needs to be done - documentation largely missing + TEXTTOPDF +========= This implements a texttopdf filter, and is derived from cups' texttops. @@ -924,6 +1091,7 @@ Please report all bugs to https://bugs.linuxfoundation.org/, product PDFTORASTER +=========== 1. INTRODUCTION @@ -990,6 +1158,7 @@ is "/tmp". PDFTOIJS +======== 1. INTRODUCTION @@ -1055,6 +1224,7 @@ is "/tmp". PDFTOOPVP +========= 1. INTRODUCTION @@ -1225,6 +1395,7 @@ Solution: URFTOPDF +======== "urftopdf" is a filter to convert Apple's proprietary URF raster format into PDF. URF raster is generated by some iOS applications when |