summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README235
1 files changed, 203 insertions, 32 deletions
diff --git a/README b/README
index 02b84d8..dede3d6 100644
--- a/README
+++ b/README
@@ -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