NEWS - OpenPrinting CUPS Filters v1.0.71 - 2015-07-02 ----------------------------------------------------- CHANGES IN V1.0.71 - texttopdf: The Page allocation is moved into textcommon.c, where it does all the necessary checking: lower-bounds for CVE-2015-3258 and upper-bounds for CVE-2015-3259 due to integer overflows for the calloc() call initialising Page[0] and the memset() call in texttopdf.c's WritePage() function zeroing the entire array. Thanks to Tim Waugh from Red Hat for the patch. - texttopdf: Upper-bounds checking (CVE-2015-3259). CHANGES IN V1.0.70 - texttopdf: Fixed buffer overflow on size allocation of texttopdf when working with extremely small line sizes, which causes the size calculation to result in 0 (CVE-2015-3258, thanks to Stefan Cornelius fro Red Hat for the patch). - cups-browsed: leak fixes - cups-browsed: Further BrowseAllow fixing - cups-browsed: BrowsePoll is an array of pointers, not structures, so allocate room for the pointers - cups-browsed: Prevent NULL dereference when handling BrowseAllow without value - cups-browsed: Use memory deallocation function corresponding to allocation function used - cups-browsed: Fixes for glib source handling (Red Hat bug #1228555) - foomatic-rip: Allow using another shell than /bin/bash using the "--with-shell=..." option for "./configure". Thanks to Leonardo Taccari for the patch (Bug #1288). CHANGES IN V1.0.69 - cups-browsed: When generating a PPD for an auto-discovered IPP network printer, create a "ColorModel" option only if valid choices are reported for it by the IPP printer. - cups-browsed: Updated PPD file generator for auto-generated queues for IPP network printers from the CUPS 2.1.x upstream code, so that floating-point numbers are written in a locale-neutral way (CUPS STR #4579). - cups-browsed: When checking whether a queue name already exists as a locally defined queue, do case-insensitive comparing as for CUPS printer names are case-insensitive. This assures that already existing queues do never get overwritten. - cups-browsed: Added "IPPPrinterQueueType Auto/PPD/NoPPD" directive to cups-browsed.conf to allow controlling how cups-browsed creates queues fr native IPP network printers: with PPD, with System V interface script, or selecting automatically. - pdftopdf: Center Landscape-oriented jobs correctly on the page if the "fitplot" or "number-up" options are used (Bug #1284). - pstopdf: Removed "-dUseCIEColor" from the Ghostscript command line. In modern Ghostscript versions (9.11 and newer) it is recommended to not use it with the pdfwrite and ps2write output devices any more. - imagetopdf: Corrections in PDF output: Let evince display the PDF with the correct size including margins and let ghostscript not complain about an invalid xref entry. - cups-browsed: Do not add options to the System V interface script which calls sys5ippprinter but set the options as defaults for the CUPS queue in printers.conf. - cups-browsed: When auto-generating a PPD-less print queue for an IPP network printer, determine default page size, unprintable margins, and color space from the printer via an IPP request. - imagetopdf: Debug logging should be only controlled by the LogLevel of CUPS, not by an awkward build time switch. - cups-browsed: Determine from the TXT records of the Bonjour broadcast of an IPP network printer whether it has color and duplex capabilities and if yes, let auto-generated PPD-less print queues use appropriate command line options to make use of these capabilities. - imagetopdf: Make this filter also work with auto-generated PPD-less print queues for IPP network printers. - sys5ippprinter: Renamed pdftoippprinter to reflect that it is once a System 5 interface script and second does not accept only PDF as input. - pdftoippprinter: Support also PWG Raster and JPEG as input formats so that an auto-generated, PPD-less queue for an IPP printer emulates an IPP Everywhere printer. CHANGES IN V1.0.68 - cups-browsed: Numeric IDs for GSources of the glib event loop must be positive integers greater than zero according to the documentation of the g_source_get_id() function. Taken care of this at all places. - cups-browsed: Added conditionals so that it also builds with CUPS 1.5.x (but then withou support for automatically creating queues for IPP network printers). Thanks to Johannes Meixner from SUSE for the patch (Bug #1268). - Ricoh-PDF_Printer-PDF.ppd: Added PPD file for Ricoh's PDF printers (experimental). Thanks to Ulrich Wehner from Ricoh for the file. CHANGES IN V1.0.67 - cups-browsed: Use g_source_remove() instead of g_source_destroy() for killing auto shutdown timers (Ubuntu bug #1427344). CHANGES IN V1.0.66 - cups-browsed: SECURITY FIX: Fixed a bug in the remove_bad_chars() failing to reliably filter out illegal characters if there are two or more subsequent illegal characters, allowing execution of arbitrary commands with the rights of the "lp" user, using forged print service announcements on DNS-SD servers (Bug #1265). - pdftoopvp: Added conditionals to also build with Poppler 0.31.0 and newer. Thanks to Armin K. (krejzi at email dot com) for the patch (Bug #1254). CHANGES IN V1.0.65 - cups-browsed: Listen for NetworkManager changes (Red Hat bug #975933). - cups-browsed: Fix for memory leak introduced in BZR rev 7059. - cups-browsed: Memory leak/uninit fixes. - cups-browsed: Cache prepared browse data to send. - cups-browsed: Only get local notifications once per BrowsePoll run. - cups-browsed: Fix BrowsePoll now notifications work properly. Need to maintain a list of printers to keep alive for the case of there being no notifications of changes. - cups-browsed: Use local browsepolling for getting initial printer list. - cups-browsed: Ignore browse packets for deleted printers. - cups-browsed: Cache connection to local cupsd. - cups-browsed: Use notifications to track local printers. This avoids expensive calls to cupsGetDests(). - cups-browsed: Manage subscriptions for local browsepolling. - cups-browsed: Track notify-sequence-number for notifications. CHANGES IN V1.0.64 - cups-browsed: Added PPD file generator for IPP Everywhere printers. If auto-setup of discovered IPP printers is activated ("CreateIPPPrinterQueues Yes" in cups-browsed.conf), the printer provides suitable capability information via a Get-Printer-Attributes IPP call, and prints PWG or PostScript input, a PPD is auto-generated based on the Get-Printer-Attributes IPP response. Otherwise a System-V interface script is used as befreo. Advantage of the PPD file is that current print dialogs aloow access to the options, no IPP request done by the dialog is required. The PPD generator code is borrowed from the CUPS 2.1.x development code repository. It will perhaps be removed in the future when CUPS provides proper API function for its PPD generator. CHANGES IN V1.0.63 - foomatic-rip: Added hint to man page that direct, spooler-less mode is mainly for testing and debugging (Bug #1253). - foomatic-rip: Added a symlink of the filter to the binary executable directory (usually /usr/bin), so that LSB compliance test scripts work (Bug #1255). - cups-browsed: Fixed CUPS Browsing timeouts. Thanks to Tim Waugh from Red Hat for the patch (Bug #1252, Red Hat bug #1189254). CHANGES IN V1.0.62 - cups-browsed: Allow underscore characters in print queue names. Thanks to Tim Waugh from Red Hat for the bug report (Bug #1241). - pdftops: Apply workarounds for Kyocera also to Utax printers as Utax uses hard- and software from Kyocera. Thanks to Edward Huang from Kyocera. - cups-browsed: Added support for "BrowseAllow All" in the cups-browsed.conf file. - cups-browsed: Reorder inclusion of headers for compatibility with NetBSD (Bug #1235). - imagetopdf, pdftopdf: Correct handling of hardware copies in PJL/JCL and/or when the PPD file has a "Copies" option. CHANGES IN V1.0.61 - cups-browsed: Fixed memory leak when a cups-browsed-generated print queue is the default printer. Thanks to Tim Waugh from Red Hat for the patch (Red Hat bug: #1119290). - cupsfilters.drv, *-PDF.ppd, textonly.ppd: Added "*cupsFilter2: ..." lines to the PPD files to support data-format-specific behavior of backends, especially of the IPP backend. CHANGES IN V1.0.60 - cups-browsed, pdftoippprinter: Do not confuse the PDL "PCLm" with "PCL". The former is a proprietary, PDF-based raster format and has nothing to do with PCL. - cupsfilters.drv: Corrected the CMD: field of the device ID, it must read "PWGRaster" there to conform to the PWG standard. CHANGES IN V1.0.59 - cupsfilters.drv: Added PPD file for a Generic IPP Everywhere Printer, generating PWG Raster output. - gstoraster, pdftoraster, imagetoraster: Allow PWG Raster output with print queues using a PPD file, using the new "PWGRaster" PPD attribute. - pdftoraster: Removed "cm_disabled" flag in selectConvFunc() - libcupsfilters: Allowed color management to continue while invalid input - rastertopdf: Streamlined PDF conversion code - rastertopdf: Invert all CUPS_CSPACE_K documents by default - foomatic-rip: Clean trailing white space from PPD file lines to avoid a segfault caused by it (Bug #1227). CHANGES IN V1.0.58 - pdftoraster: Changed ICC profile get function to accept a PPD fallback profile. - pdftoraster: Fixed handling of cupsColorSpaces 18,19,20. - rastertopdf: Added test feature to force color management if "profile=" option is specified. - rastertopdf: Grayscale color conversion now properly inverts bits. - rastertopdf: Code cleanup for prepare_pdf_page(). - rastertopdf: Implemented basic 8bit->8bit color space conversions. - rastertopdf: Added black point compensation. - rastertopdf: Added handling of color rendering intent. - gstoraster, imagetoraster, pdftoraster, rastertopclx, rastertopdf, foomatic-rip: Use color management functions in libcupsfilters. - libcupsfilters: Modified code formatting and documentation in the color management functions. - libcupsfilters: Fixed string handling and added debug log messages in the color management functions. - libcupsfilters: Fixed Adobe RGB matrix for proper rendering (transpose) - libcupsfilters: Moved color management functions from the individual filters to the libcupsfilters library. CHANGES IN V1.0.57 - rastertopclx: Fixed implicit declaration of colord_get_inhibit_for_device_id. - Build system: Explicitly link to libm as -lm was dropped from cups-config --libs. - libcupsfilters, foomaticrip, gstoraster, imagetoraster, pdftoraster, rastertopclx, rastertopdf: Handle absence of colord or D-Bus gracefully (Ubuntu bug #1356405). CHANGES IN V1.0.56 - rastertopdf: Some code polishing and removal of now unneeded functions - rastertopdf: Reduced color space handling to only PWG-supported color spaces - rastertopdf: Added colorspace calibration function; included optional "/Alternate" PDF key for ICC profile embedding - rastertopdf: Colorspace sRGB now embeds srgb icc profile; implemented ICC Profile embedding (PDF 1.3 spec) - rastertopdf: Added basic color calibration - rastertopdf: Implemented ICC Profile creation code for IPP Everywhere (from PWG raster) - pdftoraster: Added colord handling of ICC profiles - kmdevices.cpp/.h: Added interface for Kolor Manager - cups-browsed: Do not consider a remote CUPS queue as raw if the TXT record is NULL as for queues broadcasted by the legacy CUPS method the TXT record does not exist. Now consider a queue with NULL TXT record only as raw if the domain entry is not empty (which tells that the queue is Bonjour-broadcasted (Bug #1223). - cups-browsed: Do also not mark a discovered printer as already provided by another server when the other server's queue has "unconfirmed" status. Mark the other queue with "disappeared" or "unconfirmed" status as duplicate of the discovered printer so that the new queue for the discovered printer does not get removed when the entry for the other queue times out. CHANGES IN V1.0.55 - pdftopdf: Fixed manual duplex by adding a blank page to evn pages if the total number of pages of the document is odd. Otherwise the last page of the document would stay in the input tray. This fixes also a side effect as the set of even pages reducing to a zero page job if the job consists of only one page, making Poppler's pdftops error out (Ubuntu bug #1340435). - cups-browsed: Do not mark a discovered printer as already provided by another server when the other server's queue has "disappeared" status. This queue can be from the same server before it changed its name. - cups-browsed: Do not create a local queue pointing to a remote raw queue (Ubuntu bug #1335211). - foomatic-rip, imagetoraster, pdftoraster, rastertopclx, rastertopdf: Added colord "device_inhibit" support for color-managed filters. - foomatic-rip: Let it also build correctly on systems which already provide the strlcat() and strlcpy() functions, like Mac OS X. Thanks to Matt Broughton for reporting this (bug #1215). - bannertopdf: Added support for PPD-less printing, especially one gets a useful test page with PPD-less queues now. - bannertopdf: Fixed "Printer Location" and "Driver Version" entries on the test page/the banners. - bannertopdf: Added new PDF template files which contain the text strings appropriate to the banners, before the banners were all equal, without text. Thanks to Johannes Meixner from SUSE/Novell for this fix (Bug #1209). - bannertopdf: Fixed Makefile to mark it dependent on libfontembed.la. Thanks to Tim Waugh from Red Hat for the patch (Red Hat bug #1106101). - pstopdf: Use "grep -E" instead of "grep -P" as the latter generates executable code and executes it, requiring "execmem" privileges which could be not available in some security policies. Thanks to Tim Waugh from Red Hat for the patch (Red Hat bug #1079534). - foomatic-rip: NetBSD does not provide a mkstemps() function, use appropriate workaround then (Bug #1211). - cups-browsed: Reorder inclusion of headers for compatibility with NetBSD (Bug #1212). - pdftoraster: Fixed segfault caused by introduction of "no-color-management" option (Bug #1214). - libcupsfilters: Let cupsRasterParseIPPOptions() also accept "pwg-raster-document-type" settings with hyphen between color space name and color depth. CHANGES IN V1.0.54 - pdftoraster: Support for output in the color spaces 18 (CUPS_CSPACE_SW, sGray), 19 (CUPS_CSPACE_SRGB, sRGB), and 20 (CUPS_CSPACE_ADOBERGB, Adobe RGB). No color management appropriate to these color spaces is added yet. - foomatic-rip, gstoraster, imagetoraster, pdftoraster, rastertopclx: added boolean option "no-color-management" to suppress all forms of color correction when color-calibrating the printer. - pdftops: Default to "hybrid" setting for the PDF->PostScript renderer. - pdftoraster: Produce correct (compressed) PWG Raster output when requested by using the correct mode in cupsRasterOpen(). - rastertopdf: Added new filter to convert PWG Raster input into a PDF file (using QPDF). This filter makes CUPS supporting the PWG Raster input format which is required to be supported by IPP Everywhere printers, making a shared CUPS queue emulating an IPP Everywhere printer. This is a first implementation which supports the black, RGB, CMYK, sGray, sRGB, and Adobe RGB color spaces (all mapped to DeviceGray, DeviceRGB, and DeviceCMYK resp. in the PDF output) with 1, 8, and 16 bits per component color depth. sGray, sRGB, and Adobe RGB are currently also mapped to DeviceGray and DeviceRGB and do not have the correct color management yet, so color output is not absolutely correct. Note that mime.types of CUPS up to 1.7.2 has a bug which prevents PWG Raster to be recognized, the "priority(100)" of the rule needs to be changed to "priority(150)". - foomatic-rip: Corrected declaration of print_pdf() function in pdf.h file (Debian bug #748028). - foomatic-rip: Let it also build with uclibc which does not provide the mkstemps() function. Thanks to Andreas K. Huettel for the patch (Gentoo bug #509884). - cups-browsed: Create local queues also to access classes on remote CUPS servers (Ubuntu bug #1313741). - cups-browsed: Let a newly discovered printer not only overtaking an existing printer entry if it is from the same host (usually IPP -> IPPS) or without host entry (unconfirmed local queue from previous cups-browsed session) but also if it is marked disappeared. So printer entries get correctly migrated when things like a host name change of the remote server happen. - cups-browsed: Always do case-insensitive comparing of strings, as CUPS queue names and URIs are case-insensitive (CUPS STR #4411). CHANGES IN V1.0.53 - foomatic-rip: Fixed segfault when creating log file (Bug #1206). - cups-browsed: SECURITY FIX: Fix on usage of the "BrowseAllow" directive in cups-browsed.conf. Before, if the argument of a "BrowseAllow" directive is not understood it is treated as the directive not having been there, allowing any host if this was the only "BrowseAllow" directive. Now we treat this as a directive which no host can fulfill, not allowing any host if it was the only one. No "BrowseAllow" directive means access for all, as before (Bug #1204). - cups-browsed: SECURITY FIX: Further improvement on the fix in 1.0.51 as it was insufficient. In addition, some fixes against OOB access are done. Thanks to Sebastian Krahmer for the patch (SUSE/Novell bug #871327). CHANGES IN V1.0.52 - texttopdf: Make sure that margin changes for prettyprint get applied. - texttopdf, imagetopdf, imagetoraster: Range-check paper dimensions and margins taken from the PPD file and correct them if needed (Bug #1195). CHANGES IN V1.0.51 - cups-browsed: SECURITY FIX to prevent arbitrary code injection into the System V interface scripts generated for queues for discovered native IPP printers by a malicious IPP print service with forged make/model and/or PDL string. CHANGES IN V1.0.50 - pdftops: Let old HP LaserJet printers (model number without letter, like "LaserJet 3" or "LaserJet 4000") use Poppler instead of Ghostscript (Debian bug #742765). - pdftops: Improved workaround for Toshiba printers. Instead of using Poppler do not emit TrueType fonts with Ghostscript (Ubuntu bug #998087). - cups-browsed: Build the device URIs for all local queues we create with the CUPS library function httpAssembleURIf() for proper percent escaping of characters which are not allowed in URIs (Bug #1187). CHANGES IN V1.0.49 - pdftops: Use Poppler also for Toshiba printers (Ubuntu bug #998087). - pdftops: Fixed typo which always made PostScript level 2 being generated when using Poppler's pdftops (Ubuntu bug #1294370). CHANGES IN V1.0.48 - cups-browsed: Fix for a crash which happens on Bonjour reports of printers without "product", "usb_MDL", and "ty" fields in the text record (Ubuntu bug #1284834). - cups-browsed: In README and in the sample startup scripts/configs for System V Init and Upstart taken into account the fact that it is not required any more to start avahi-daemon before starting cups-browsed. CHANGES IN V1.0.47 - pdftoopvp: SECURITY FIX for CVE-2013-6474, CVE-2013-6475, and CVE-2013-6476: Introductionof gmallocn and gmallocn3 to protect against arbitrary code execution with the privileges of the "lp" user via malicious PDF files. Also restrict the directory from where OPVP drivers can get loaded. - urftopdf: SECURITY FIX for CVE-2013-6473: Two heap-based buffer overflow flaws in urftopdf. If a malicious URF file were processed it could lead to arbitrary code execution with the privileges of the "lp" user. - pdftopdf: Fixed typo in initialization which sets the default value page border to an undefined value. Thanks to Helge Blischke for the patch. - cups-browsed: Check for changes of the URI of a queue which we have created and correct the URI if needed, especially if a queue was not removed on shutdown of cups-browsed (default printer or still having jobs) and before restart of cups-browsed the server's DNS-SD-provided has changed. - bannertopdf: Support PDF forms as banner template. This allows especially internationalized banner pages. Forms can contain fields for any CUPS/IPP value and get automatically filled Thanks to Andrew V. Stepanov from ALT Linux (Bug #1170, also first step to fix Ubuntu bug #1196986). CHANGES IN V1.0.46 - gstoraster: Ignore SIGCHLD, rely on waitpid instead. Thanks to Lauri Tirkkonen (Bug #1184). - gstoraster: Fix two instances of insufficient EINTR handling. Thanks to Lauri Tirkkonen (Bug #1184). CHANGES IN V1.0.45 - cups-browsed: Under Upstart load the AppArmor profile (Ubuntu bug #1276630). - cups-browsed: Added auto-shutdown feature for on-demand use of cups-browsed (for example on mobile devices). With auto shutdown active, cups-browsed terminates after a certain time interval (30 sec by default) without having any remote printer to make available locally. The mode can be turned on, turned off (default) or set to automatically be off while avahi-daemon is running an on otherwise (controlled by avahi-daemon running on-demand). The mode and the timeout interval can be selected by command line options, the configuration file, and sending signals to cups-browsed (on/off only). - cups-browsed: To make Bonjour-discovered printers locally available avahi-daemon does not need to be started before cups-browsed and does not need to stay continuously running while cups-browsed is running. Bonjour-discovered printers are now added whenever avahi-daemon starts and removed whenever avahi-daemon stops and cups-browsed keeps running. This makes it easier to use cups-browsed in different system-configurations and also on systems with daemons running on-demand (like mobile systems). - foomatic-rip: Fixed pid_t/int function prototype mismatch (Bug #1182). - Fixed --with-pdftops-path and --with-pdftocairo-path options in ./configure (Bug #1181). - foomatic-rip: Do not use PATH_MAX for the length of static strings which are supposed to hold a command line. Use our own CMDLINE_MAX constant to set them to a length of 65535 bytes (Ubuntu bug #1019662, Debian bug #738440). - pdftops: Log command lines of renderer (Ghostscript, pdftops, pdftocairo, acroread) and of pstops in CUPS' error_log (in debug mode). CHANGES IN V1.0.44 - README: Documented the "hybrid" choice for the PDF renderer in the pdftops filter. - pdftoippprinter: Handle missing Ghostscript/Poppler for all output formats. - cups-browsed: Minor corrections in the error messages. - gstopxl: Support for PPD-less printing. Resolution, InputSlot, Duplex, and ColorModel are set also without PPD file now. - Added another sample PPD file for a native PDF printer, Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd. Thanks to Adrian Johnson for contributing this PPD file. CHANGES IN V1.0.43 - cups-browsed: When automatically setting up a PPD-less print queue for an IPP network printer add make/model info as an additional "make-and-model" command line option to the call of the pdftoippprinter filter, this way filters can do make/model-specific exceptions (quirk rules). - pdftopdf: Take page size from the command line if not already given by the PPD file, this way "fitplot"/"fit-to-page" also works with PPD-less printing. - libcupsfilters: cupsRasterParseIPPOptions() did not set sRGB color space. - libcupsfilters: cupsRasterParseIPPOptions() did not set Tumble with "Duplex=DuplexTumble". - pdftopdf: Fixed software copy generation logic for printers with hardware copy generation, but without collate support (Ubuntu bug #1259240). - pdftops: Let Ghostscript output PostScript level 3 also for PPD-less printing, but not for HP lasers or when make/model info is not supplied. - cups-browsed: removed duplicate definition of ippSetVersion. - foomatic-rip: Take PATH_MAX constant from limits.h if available instead defining it's own version conflicting with kfreebsd. Thanks to Peter Green for the patch (Debian bug #731658). - pdftops: Ignore "landscape", "orientation-requested", "fit-to-page", and any page geometry options. The first two do not make sense on PDF input and therefore should only be used in ...topdf filters used before pdftopdf, the others are already taken care of by pdftopdf so that pdftops gets pages with print-ready page geometry. - pdftops: Added "-nocenter" to the call of "pdftops -origpagesizes" (Poppler/freedesktop.org bug #72312, comments #6 and #7). - pdftopdf: If there is no PPD file or no "*LandscapeOrientation:" keyword in the PPD file, rotate counterclockwise, not clockwise to fit a landscape-oriented page on a portrait-oriented sheet (See Poppler/freedesktop.org bug #72312, comment #6). - pstopdf: Support for the "landscape" and "orientation-requested" options (Ubuntu bug #1243484). - pdftops: Support for PPD-less printing on PostScript printers: duplex, resolution, input tray, color mode, and make/model (for quirk rules) can now be supplied by the command line, pdftopdf takes care of the page geometry. - libcupsfilters: cupsRasterParseIPPOptions() allows specifying resolutions without unit now, assuming dpi then (example: "600x600"). - Fixed "--with-cups-rundir" and "--with-cups-domainsocket" options in configure (Bug #1174). - pdftops: After fixing the output of rotated PDF pages (usually landscape-oriented pages rotated by pdftopdf) in Poppler (Poppler/freedesktop.org bug #72312) corrected the use of "pdftops -origpagesizes" in pdftops appropriately (Red Hat bug #768811). CHANGES IN V1.0.42 - pdftoippprinter: Check also the presence of Ghostscript and use pdftoraster if Ghostscript is missing. - gstoraster: At build time use the path for Ghostscript which our build system already finds for pdftops. - pdftoraster: Take into account rotate field in PDF header, when pdftopdf rotates a page to fit the paper it sets the rotate field and does not swap the width and height entries. - pdftoippprinter: Made PCL 5c/e printing working correctly, by first adding support for unprintable margins and defaulting to 12pt margins if no margin info is supplied, and second, by doing color printing always in RGB color space. - rastertopclx: Improved support for PPD-less printing, allowing color printing with (s)RGB color space. Output is in sRGB then. - rastertopclx: Determine page size and select correct PCL command for the page size more reliably, especially for landscape-oriented pages. - gstoraster, pdftoraster: Do correct PWG Raster output, allow switching to PWG Raster via "media-class=PwgRaster" option and CUPS Raster via "media-class=". Default for PPD-less printing is PWG Raster. - gstoraster, pdftoraster: Support applying unprintable margins for PPD-less mode with CUPS Raster output. - libcupsfilters: Added support for "media-left-margin", "media-right-margin", "media-bottom-margin", and "media-top-margin" IPP options to specify unprintable margins in 1/100th of a mm, to allow PPD-less printing with unprintable margins (esp. PCL 5c/e with rastertopclx). - libcupsfilters: Do not set "MediaClass" to "PwgRaster" when we request a CUPS Raster header and not a PWG Raster header. - libcupsfilters: Fixed typo in a debug message in the colord support part. - cupsfilters.convs: Corrected cost factor of vnd.cups-postscript -> vnd.cups-raster conversion with gstoraster, so that input data of the type application/vnd.adobe-reader-postscript is converted correctly (not via pstotiff). Thanks to Tim Waugh from Red Hat for this patch - cups-browsed: Fixed several memory leaks by adding missing free() calls and removing an unneeded strdup(). Thanks to Jaromir Koncicky from Red Hat for the patch (Red Hat bug #1027317). - Backends parallel and serial: Fixed logical expressions for error handling (Bug #1172). - libcupsfilters: Moved filter/colord.[ch] into the library as this code is now used by both gstoraster and foomatic-rip. - libcupsfilters: Made the names of the flags to tell that the header is already included unique in all API header files. - foomatic-rip: Moved foomatic-rip's upstream home from the foomatic-filters package to cups-filters, to make it easier for distributions to ship and maintain a complete printing stack and also to make upstream maintenance and development easier. - foomatic-rip: Removed support for all the non-CUPS printing environments as they are discontinued upstream. Now foomatic-rip only works as a CUPS filter and in a spooler-less direct mode, where the latter is mainly for testing and debugging. Thanks to Anshul Kushwaha (anshulkushwaha1 at gmail dot com) for doing this as a Google Summer of Code 2013 project. - foomatic-rip: Eliminated compiler warnings. - foomatic-rip: fixed "endswith()" string utility function. - foomatic-rip: Removed unneeded HAVE_DBUS conditionals. - gstoraster: Fixed build system for gstoraster use D-Bus for colord support. - libcupsfilters: Recognize more Adobe-generated CMYK JPEGs to take into account their inverted colors (Bug #1169). - pdftopdf: When checking whether double-sided printing is chosen, do not only check for the choice names "DuplexNoTumble" and "DuplexTumble" but also for "LongEdge", "ShortEdge", "Top", and "Bottom", as CUPS does (Bug #1167). CHANGES IN V1.0.41 - cups-browsed: Added support for automatic PPD-less setup of print queues for IPP printers discovered on the network via Bonjour. Supported are printers with known languages (PWG Raster, PDF, PostScript, PCL XL, PCL 5c/e), especially also IPP Everywhere printers. This functionality is especially ment for mobile devices to be able to print without printer setup tool and without printer driver/PPD collection. - cups-browsed: Fixed a Valgrind-reported issue. - pdftoippprinter: New filter for PPD-less printing. The filter will be configured as System-V interface script for a print queue for a discovered IPP network printer generated by cups-browsed. - rastertopclx: Added support for PPD-less printing. Without PPD the filter generates PCL 5e. - cups-browsed: Fixed socket leaks in recent IPP subscriptions changes. Thanks to Tim Waugh from Red Hat for the patch (Red Hat bug #1021512). CHANGES IN V1.0.40 - pdftops: Introduced new "hybrid" renderer: Here usually Ghostscript is used, but if the printer is a Brother, Minolta, or Konica Minolta Poppler's pdftops gets used. This is a quirk rule to work around bugs in the PS interpreters of the printers. - Fixed format string issues and added __attribute__ wording to printf-like functions to catch any regressions. Thanks to Tim Waugh from Red Hat for the patch. CHANGES IN V1.0.39 - pdftops: Fix for landscape PDF handling. Do not use the command line options "-origpagesizes" and "-choosePaperByPDFPageSize" of Poppler's pdftops utility on already processed PDF data. Thanks to Tim Waugh from Red Hat for the patch. - cups-browsed: Improve the efficiency of BrowsePoll by using IPP notifications when possible. It falls back to the previous behaviour if it is not possible to use this optimization. Thanks to Tim Waugh from Red Hat for the patch. CHANGES IN V1.0.38 - pdftops: Added "-dNOINTERPOLATE" to the Ghostscript command line for quicker processing of embedded bitmaps. - pstopdf: Added "-dUseCIEColor" to the Ghostscript command line to assure compatibility with newer Ghostscript versions (9.08 and newer). CHANGES IN V1.0.37 - Added example configuration files for systemd and Upstart. Thanks to Tomáš Chvátal for the systemd file. - Build system: Make sure that gstoraster gets linked against the libcupsfilters of the currently built package and not of the system. Thanks to Tomáš Chvátal. - cupsfilters.convs: Reworked the cost factors of the filters to avoid bogus filter chains like pstotiff|imagetopdf instead of pstopdf|pdftopdf for PostScript->PDF. Thanks to Tim Waugh from Red Hat for the report. - pdftopdf: Accept additional command line options for PPD-less printing. - cups-browsed: Fixed building with CUPS 1.5.x and older, ippSetVersion() was missing under the accessor function definitions for backward compatibility. CHANGES IN V1.0.36 - Fixed libdl detection in configure. Thanks to Andreas Huettel and Yuta Satoh (Gentoo bug #478642). - cups-browsed: Allow BrowsePoll operation also access print queues on older CUPS servers. Thanks to David Mohr for the patch. - cups-browsed: Assure that it always applies to the local CUPS daemon and never to a remote one specified via client.conf (Ubuntu bug #1207203). - pdftoopvp, pdftoijs, pdftoraster, bannertopdf: Made code working with Poppler 0.24.x (Bug #1144). - gstoraster: Silenced compiler warnings. - gstoraster, pdftoraster: Added support for PPD-less printing controlled by IPP attributes (CUPS 1.7.x+ only). - gstoraster, gstopxl: Moved these filters from Ghostscript to cups-filters as upstream home. - libcupsfilters: Added new cupsRasterParseIPPOptions() API function for PPD-less printing controlled by IPP attributes (raster.h, CUPS 1.7.x+ only). - pdftopdf: Added support for page labels. "page-label" option and "CLASSIFICATION" environment variable. Thanks to Tim Waugh from Red Hat for the patch. - pdftops: If one or more of the PDF-to-PS renderers (Ghostscript, Poppler pdftops, Poppler pdftocairo, acroread) is not installed at build time, pre-fill the appropriate executable's path with the executable name to allow the use of this renderer when it gets installed later (Debian bug #716842). - cups-browsed: Do not resolve host names of remote printers discovered via CUPS broadcasts (Bug #1141). - Added man pages for cups-browsed and cups-browsed.conf. Thanks to Brian Potkin for the contribution (Debian bug #714460). - Install also escp.h, it is useful for .drv files. CHANGES IN V1.0.35 - pdftoraster: Silenced compiler warning (Bug #1092). - bannertopdf: Fixed typo which prevented the host name to be shown (Bug #1115). - README: Fixed info about the PPD keyword cupsManualCopies (Bug #1086). - Modified the cost factors of the filters to avoid unneeded PDF conversion detours when the input data is PostScript. Instead of pstopdf->pdftopdf->pdftops and pstopdf->pdftopdf->gstoraster we get pstops and pstops->gstoraster now (Bug #1138). - pdftops: Added experimental support for pdftocairo as PDF renderer. Note that PostScript level 1 output and PDF input with color spaces other than DeviceRGB, DeviceGray, sRGB or sGray is not supported. PDFs generated by Cairo (for example when printing from evince) uses only supported color spaces. Thanks to James Cloos for the patch (Bug #1139). - cups-browsed: Changed default of browsing protocols fron none to both DNS-SD and CUPS. - pdftops: Let Poppler generally generate PostScript level 3 if the PPD identifies the printer as PS3 printer, make an exception of sending PostScript Level 2 only for HP's laser printers, to not compromise print quality and performance on all PS3 printers only due to some buggy HP models (Debian bug #712949, see also Ubuntu bug #277404). - Install pcl.h, it is needed by cupsfilters.drv. Thanks to Jiri Popelka from Red Hat for the patch (Bug #1133). - Make cups-filters building with automake 1.13. Thanks to Andreas K. Huettel (dilfridge) on IRC. - libcupsfilters, libfontembed, pdftopdf, texttopdf, cups-browsed: Fixed several resource leaks and other problems. Thanks to Jiri Popelka from Red Hat for the patches (Bug #1116). CHANGES IN V1.0.34 - cups-browsed: Fixed build with OpenBSD (Bug #1103). - pdftopdf: Enabled hardware copy generation, if available. - pdftopdf: Fixed evenDuplex logic. - cups-browsed: If a queue left over from the last session gets confirmed, fill in the data structure with the Bonjour parameters, also update the Bonjour parameters if a local queue is upgraded from IPP to IPPS. CHANGES IN V1.0.33 - cups-browsed: Added NULL check (Bug #1106). CHANGES IN V1.0.32 - cups-browsed: Shared algorithm to generate local queues based on browsed remote queue data between Bonjour and CUPS browsing, as the simpler method used for CUPS browsing could overwrite local print queues and had de-duplication problems, for example if the server appears on two IPs in the network (connected by both ethernet and WLAN). - cups-browsed: CUPS broadcasting also broadcasted non-shared, especially cups-browsed-generated printers. Switched to detection of non-shared printers by the appropriate bit in the printer-type bit field IPP attribute. - cups-browsed: Made CUPS broadcasting work also without BrowseAllow lines in cups-browsed.conf. In this case we accept all remote printers (Ubuntu bug #1163764). - README: Updated documentation for cups-browsed. - Added more comments and examples to /etc/cups/cups-browsed.conf. - cups-browsed: Added support for "...:<port>" extensions of BrowsePoll addresses. Thanks to Tim Waugh from Red Hat (Ubuntu bug 1159213). CHANGES IN V1.0.31 - cups-browsed: cups-browsed removed valid local queues pointing to remote queues when cups-browsed did not shut down cleanly after the previous session, leaving the user with missing local accessor queues for some of the remote CUPS queues (Ubuntu bug #1131149). - Fixed build system to allow parallel or multilib builds. Thanks to Timo Gurr for the patch (Bug #1104). - pdftopdf: Improved error output. - pdftopdf: getRotation now handles unusual cases more graceful (probably fixes Ubuntu Bug #1154318). - Fixed build system to allow building without Avahi. In this case a cups-browsed with only CUPS broadcasting/browsing will get built. Thanks to Tim Waugh from Red Hat (Bug #1101, Bug #1102). CHANGES IN V1.0.30 - cups-browsed: Do not remove a generated local print queue when it was made the system default printer (Ubuntu bug #1146407). - texttopdf: Fixed corrupted pdf when a utf-8 title is given and corresponding crash with 'prettyprint' (Ubuntu Bug #1137438). - cups-browsed: Added CUPS Broadcasting for sharing local printers to remote CUPS clients with CUPS 1.5.x and older. Thanks to Tim Waugh from Red Hat. - cups-browsed: Added sample config-file and build-time default setting options. Thanks to Tim Waugh from Red Hat. - cups-browsed: Added CUPS browsing and BrowsePoll functionality, to be backwards compatible to CUPS 1.5.x and older servers. Thanks to Tim Waugh from Red Hat. - pdftopdf: Fixed incorrect evenDuplex page insertion (Bug #1088). - pdftoopvp: Let it build with Poppler 0.22.x. Thanks to Koji Otani from BBR Inc. (Bug #1089). CHANGES IN V1.0.29 - Fixed ./configure option "--with-rcdir=no". Thanks to Jiri Popelka from Red Hat (Bug #1091). CHANGES IN V1.0.28 - cups-browsed: Do not create CUPS queues for shared local CUPS printers. CHANGES IN V1.0.27 - cups-browsed: The daemon crashed if there is no local CUPS queue at all. Fixed. CHANGES IN V1.0.26 - Some fixes in README and INSTALL. - cups-browsed: Added daemon to browse the Bonjour broadcasts of shared remote CUPS printers and automatically add local raw queues pointing to them, to resemble the behavior of the former CUPS broadcasting/browsing which was dropped in CUPS 1.6. Now remote printers appear as local print queues as before, but with the standardized Bonjour broadcasting. - "make dist" got broken in 1.0.25. Fixed. CHANGES IN V1.0.25 - urftopdf: Newly added filter to convert the URF format which (at least some) iOS apps send when printing via AirPrint (Bug #1076). - pdftopdf: pdfautorotate functionality has been patched directly into pdftopdf (Bug #1080). - pdftopdf: "mirror" produced only empty pages (XObjects not there). - pdftopdf: Fixed segfault on "page-ranges=1-2147483647" (from cups). - pdftopdf: Fixed collate filler insertion. - texttopdf: Fixed deficient string escaping (Bug #1071). - pdftoopvp: Get correct byte order definition when building under OpenBSD (Bug #1070). - serial backend: Added check for sys/ioctl.h to configure.ac (Bug #1069). - pdftopdf: Made code building under OpenBSD (Bug #1068). - pdftopdf: Don't expect too much C++11 support for now (Bug #1067). CHANGES IN V1.0.24 - pdftopdf now generates the necessary pdf comments to disable duplicate number-up when pdftops is also applied (Bug #1063). - pdftops: Added support for using Adobe Reader (acroread) in command line mode for turning PDF to PostScript (Bug #1065). - pdftopdf: Fix build on OpenBSD (Bug #1062). - pdftops: Fix stripping of page management options from the pstops command line which got already applied by pdftopdf. If the name of the option to be removed is contained in the name of a option in the command line (like "number-up" in "number-up-layout" or "scaling" in "Natural-scaling"), this option gets stripped instead of the correct option (Bug #1064). CHANGES IN V1.0.23 - Removed filter/pdftopdf.old - Fixed the requires.private for cupsfilters lib CHANGES IN V1.0.22 - Added missing *.h files of filter/pdftopdf/ to source file list so that "make dist" builds correct upstream tarballs. CHANGES IN V1.0.21 - bannertopdf: Page duplication routine fixed. - bannertopdf: Fixed invalid output of a direct stream object. - pdftopdf filter replaced by new QPDF-based filter from Tobias Hoffmann's Google Summer of Code project. The former Poppler-based pdftopdf duplicated a lot of Poppler's code. The old filter is still in the package as pdftopdf.old with source code in filter/pdftopdf.old. It will be removed in a later release. - Added most recent contributors to AUTHORS and COPYING files. CHANGES IN V1.0.20 - pdftops: Added another workaround for Kyocera printers: Some models get very slow on images which request interpolation, so now we remove the image interpolation requests by additional PostScript code only inserted for Kyocera printers (Ubuntu bug #1026974). - pdftops: The build system only configured the default renderer (Ghostscript OR Poppler), not the other renderer, but as we support switching on runtime both need to get configured. - Improved portability of the package to non-Linux systems (Bug #1056). - Made the Poppler-based filters pdftopdf and pdftoopvp build with both Poppler 0.18.x and 0.20.x (Bug #1055). - Let build system check for dlopen. CHANGES IN V1.0.19 - Fixes according to Coverity scan results (Bug #1054). - Added distribution packaging instructions to INSTALL. - Switched build system to autotools. This especially fixes several build problems in Gentoo. Also build-tested with CUPS 1.6.0b1. - Fixes for compatibility with clang/gcc-4.7. - textonly: Filter did not work as a pipe with copies=1 (Bug #1032). - texttopdf: Avoid trimming the results of FcFontSort(), as this may miss some reasonable candidates under certain circumstances. BTW, fix passing a non-pointer as a pointer to "result" (Debian bug #670055), - Corrected documentation. The option for the maximum image rendering resolution in pdftops is "pdftops-max-image-resolution", not "pdftops-max-image-resolution-default". CHANGES IN V1.0.18 - Modified "./configure" options related to the pdftops filter to allow changing the defaults for the renderer being used by default (Ghostscript or Poppler) and the maximum image rendering resolution and to supply paths for both Ghostscript's gs and Poppler's pdftops. - pdftops: Allow selection whether Ghostscript or Poppler is used at runtime, setting the "pdftops-renderer" option to "gs" or "pdftops". - pdftops: Allow setting an upper limit for the image rendering resolution, also at runtime, setting the option "pdftops-max-image-resolution" to the desired limit in dpi. "0" means no limit. - pdftops: Fixed crash by wrong usage of sizeof() function when adding "Collate" to the fifth command line argument for the "pstops" CUPS filter call (Ubuntu bug #982675). - pdftops: Removed newline from copies value when reading it from the "%%PDFTOPDFNumCopies" entry of the incoming PDF file. - pdftops: Silenced compiler warning about ignoring the return value of the write() function. - pdftops: Added a crash guard. - pdftops: Start determining the printing resolution with cupsRasterInterpretPPD(), this is the most reliable as often the choice names of the "Resolution" option are marketing names with higher numerical values than the actual resolution. Also ignore error exit values of cupsRasterInterpretPPD() as the function can error out after having found the resolution. - pdftops: If printing resolution is determined by cupsRasterInterpretPPD() do not stick on 100 dpi if the resolution cannot be determined (Ubuntu bug #984082). CHANGES IN V1.0.17 - pdftopdf: Fixed segmentation fault when printing selected pages ("page-ranges" option, Ubuntu bug #980673). CHANGES IN V1.0.16 - pdftopdf: Fixed segmentation faults when using N-up with certain PDF files (Ubuntu bug #980673) and when calling pdftopdf manually without specifyting a PPD file. CHANGES IN V1.0.15 - pdftops: Suppress image compression only for Brother printers as they really need this measure to print at all. This accelerates printer- internal job processing on most other printers (tested on HP and Kyocera). Also suppress page compression on Kyocera printers, this works around a bug in Kyocera's PostScript interpreters which makes printing pages with images very slow (Ubuntu bug #977912). CHANGES IN V1.0.14 - pdftops: Determine printing resolution from the PPD file and supply it on the Ghostscript or pdftops (Poppler) command line, so that the renderer does the image rendering with a resolution matching the printer's resolution. This avoids too slow processing of the jobs by the printer's built-in PostScript interpreter. In addition a default resolution of 300 dpi is used for PPDs without any hint of the printer's resolution, as most PostScript lasers use multiples of 300 dpi as resolution (Ubuntu bug #977912). CHANGES IN V1.0.13 - bannertopdf: Fix display of the job dates on the test page and on banner pages (Ubuntu bug #975064). CHANGES IN V1.0.12 - Fixed crash of imagetopdf filter when it is called manually without supplying a valid PPD file (Ubuntu bug #973564). CHANGES IN V1.0.11 - Actually install the Generic PDF printer PPD file. - Really introduce a Generic PDF printer PPD file. CHANGES IN V1.0.10 - Added Generic PPD file for native PDF printers. - Updated all code copied from Poppler to the current state of Poppler. - Made Poppler-based PDF filters building with various versions of Poppler. CHANGES IN V1.0.9 - Deactivated NIME conversion rules which are not used by the PDF- based printing workflow. - Cleaned up sample PPD file HP-Color_LaserJet_CM3530_MFP-PDF.ppd. - imagetopdf: Added support for native PDF printers. - imagetopdf, imagetoraster: Let image input "scale to fit" by default. This makes photo printing via AirPrint work, as the iOS devices send JPEG but do not allow setting options. CHANGES IN V1.0.8 - pdftops: Generally do not compress fonts and images, and also do not do CCITT compression for bitmap glyphs to make the PostScript output more compatible with buggy PostScript interpreters. The output gets 30-50% longer but will work on many more different printer models. Problems were also discovered on HP and not only on Brother (Ubuntu bug #960666). CHANGES IN V1.0.7 - pdftops: Added PostScript debug mode. For jobs sent with "-o psdebug" the PostScript output by Ghostscript does not have compression of pages and fonts, so that one can analyse the PostScript code, especially in cases of incompatibilities and bugs of the built-in PostScript interpreters of printers. Thanks to the Ghostscript upstream developers for this hint. CHANGES IN V1.0.6 - texttopdf: Fixed minor miscalculation of /AvgWidth. - texttopdf: Added support for direct file references in pdf.utf-8. - pdftops: Added another workaround for a bug in Brother's PostScript interpreter: Suppress CCITT compression for bitmap glyphs and images on Brother printers (Ubuntu bug #955553). - texttopdf: Fixed typo in pdf font descriptor dictionary keys. - Fixed ColorDevice definition in cupsfilters.drv for HP DesignJet printers. - Put ModelNumber entries in cupsfilters.drv at the right place to get correct "*cupsModelNumber:" entries in the PPDs for the HP DesignJet printers. - rastertopclx: Code of JCL options did not get inserted into the JCL header. - parallel backend: Use the same way as CUPS does to prevent an infinite loop on side channel errors (CUPS STR #4044). - pdftopdf: Added support for native PDF printers, add JCL (PJL) options and send page_log entries only if the PDF has the "*JCLToPDFInterpreter:" keyword. - Updated README.txt for the new native PDF printer support. - Added a sample PPD file for a native PDF printer, HP-Color_LaserJet_CM3530_MFP-PDF.ppd. - texttopdf: A lot of internal rework; also split up into more files - texttopdf: Fixed many bugs on the way - texttopdf: Added support for CFF-flavoured OTFs; for these subsetting is not yet implemented, full embedding is done instead - texttopdf: Adapted and improved fontconfig font selection - Make sure that "make clean" and "make distclean" also work if Makedefs does not exist (Debian bug #663564). CHANGES IN V1.0.5 - pdftops: Added insertion of workaround PostScript code for printers with bugs in their PS interpreters (Ubuntu bugs #950713, #951627). - parallel backend: Break infinite loop (Ubuntu bug #936647). - texttopdf: Complete the implementation of fontconfig-based font selection (Debian bug #663070). CHANGES IN V1.0.4 - texttopdf: Fall back to altermative fonts via fontconfig if the FreeMono TrueType fonts are not installed (Debian bugs #495598 and #662660). - bannertopdf: Fix off-by-one error in page duplication - bannertopdf: Put indirect references to streams into the page's contents - bannertopdf: Let byte offsets for the Xref table of the PDF output being determined correctly also when the output goes to stdout (Ubuntu bug #939735). - bannertopdf: Output multiple copies of the test page if duplex and/or N-up is chosen, to let the test page appear on all possible positions of the sheet (Ubuntu bug #939530). CHANGES IN V1.0.3 - bannertopdf: Draw the frame to mark the non-printable borders 1pt smaller all around to assure that it is always visible, like it was done in bannertops. - bannertopdf: Scale the page to fit onto the desired output page. - bannertopdf: Get and output the correct media limits. CHANGES IN V1.0.2 - bannertopdf: Fixed crash caused by wrong Poppler API use. - bannertopdf: Info text on test page came out in gray and not in black. CHANGES IN V1.0.1 - Added the textonly filter and its PPD file, a driver for text-only printers. - Install the pdftoijs sample PPD file HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd - Added cupsfilters.drv, centralized ppdc-based PPD generator for the printer driver filters in this package. Current printers supported are several HP DesignJet large format inkjet printers. - Fixed "make uninstall". Now everything of this package gets removed. - Added wrapper scripts texttops and imagetops for backward compatibility to third-party PPD files or custom configurations which refer to these filters explicitly (Debian bug #658258). CHANGES IN V1.0 - Built the pdftops filter based on Ghostscript by default, as Ghostscript is better optimized for print output (Ubuntu bug #926068). - If the pdftops filter is built for using Poppler, let Poppler not emit PostScript level 3, as this causes problems with some HP printers (Ubuntu bug #277404, Freedesktop (Poppler) bug #19640). - bannertopdf needs to be linked with C++ (bug #995) - Added test.sh script for testing texttopdf - Added original documentation of the PDF filters to README.txt - Install C header files and the static library - General clean-up of "make install" targets in Makefiles - Raised MIME conversion cost factor of pdftoraster from 66 to 100 to give priority to the gstoraster filter from Ghostscript, as this filter supports ICC-profile-based color management. - Documentation updated because libijs, liblcms, freetype, and fontconfig are needed to build this package CHANGES IN V1.0b1 - Removed the bannertops, imagetops, and texttops filters, they are not needed any more in the PDF-based printing workflow - Added support for liblcms2 - Named the package "OpenPrinting CUPS Filters" - Renamed libcupslegacy to libcupsfilters - Joined pdftops and cpdftocps filters into one C program - Added new bannertopdf filter from Lars Uebernickel: https://launchpad.net/bannertopdf - Added the filters for the PDF-based printing workflow, from OpenPrinting: http://sourceforge.jp/projects/opfc/ and http://www.openprinting.org/download/printing/pdf-printing/ - Initial packaging of files that are no longer included in CUPS 1.6 from CUPS upstream (http://www.cups.org/)