Version 9.23:
Ghostscript now has a family of 'pdfimage' devices (pdfimage8, pdfimage24 and pdfimage32) which produce rendered output wrapped up as an image in a PDF. Additionally, there is a 'pclm' device which produces PCLm format output.
There is now a ColorAccuracy parameter allowing the user to decide between speed or accuracy in ICC color transforms.
JPEG Passthrough: devices which support it can now receive the 'raw' JPEG stream from the interpreter. The main use of this is the pdfwrite/ps2write family of devices that can now take JPEG streams from the input file(s) and write them unchanged to the output (thus avoiding additional quantization effects).
PDF transparency performance improvements
IMPORTANT: We are in the process of forking LittleCMS. LCMS2 is not thread safe, and cannot be made thread safe without breaking the ABI. Our fork will be thread safe, and include performance enhancements (these changes have all be been offered and rejected upstream). We will maintain compatibility between Ghostscript and LCMS2 for a time, but not in perpetuity. Our fork will be available as its own package separately from Ghostscript (and MuPDF).
We have continued the focus on code hygiene in this release cleaning up security issues, ignored return values, and compiler warnings.
The usual round of bug fixes, compatibility changes, and incremental improvements.
Highlights in this release include:
* Ghostscript can now consume and produce (via the pdfwrite device) PDF 2.0 compliant files.
* The main focus of this release has been security and code cleanliness. Hence many AddressSanitizer, Valgrind and Coverity issues have been addressed.
* The usual round of bug fixes, compatibility changes, and incremental improvements.
Remove Makefile.common that is not used by anything, despite
a comment to the contrary.
Highlights in this release include:
The usual round of bug fixes, compatibility changes, and
incremental improvements.
For a list of open issues, or to report problems, please visit
bugs.ghostscript.com. Incompatible changes
The planned device API tidy did not happen for this release,
due to time pressures, but we still intend to undertake the
following: We plan to somewhat tidy up the device API. We intend
to remove deprecated device procs (methods/function pointers)
and change the device API so every device proc takes a graphics
state parameter (rather than the current scheme where only a
very few procs take an imager state parameter). This should
serve as notice to anyone maintaining a Ghostscript device
outside the canonical source tree that you may (probably will)
need to update your device(s) when these changes happen. Devices
using only the non-deprecated procs should be trivial to update.
* New custom PJL (near) equivalents for pdfmark and setdistillerparams.
* Metadata pdfmark is now implemented.
* An experimental, rudimentary raster trapping implementation implementation has been added to the Ghostscript graphics library.
* The halftone threshold array generation tools (part of toolbin/halftone) have been improved with thresh_remap which allows folding the transfer function (AKA toner response curve (TRC)) into the threshold array so that highlights are improved. Further, gen_stochastic has improved support for minimum dot size and shape.
* Plus the usual round of bug fixes, compatibility changes, and incremental improvements.
pdfwrite now uses the same color management engine as Ghostscript rendering devices (by default LCMS2). This provides much better control over color conversion and color management generally, but will result in some small color differences when compared to the old system.
It is no longer necessary to specify UseCIEColor (and we very much encourage you not to do this) or the ProcessColorModel if you want to convert a PDF file to a specific color space, simply set the ColorConversionStrategy appropriately.
We do not expect any major problems to arise with this new code, but for the duration of this release a new switch -dPDFUseOldCMS is available which will restore the old color management. See: Color Conversion and Management
Please note that due to constraints of the PDF/A-1 specification, the new color management does not yet apply when producing PDF/A files.
A new device 'eps2write' has been added which allows for the creation of EPS files using the ps2write device instead of the old (deprecated and removed) pswrite device. This produces considerably better quality EPS files than the old epswrite device which is now also deprecated and will be removed in a future release.
ps2write now has a feature to allow customisation of the output for specific devices. Please see PSDocOptions and PSPageOptions described in ps2ps2.htm Additional Distiller Params
Ghostscript now reduces memory usage when processing PDF files that use transparency and output is to display devices such as Windows display or x11 (i.e. devices that are strictly full framebuffer devices), and to high level vector devices that cannot reproduce the PDF transparency model, such as the ps2write device or pdfwrite when 'flattening' to PDF 1.3 or earlier (-dCompatibilityLevel=1.3). This uses banding (clist) files to render the transparent areas in bands to reduce memory use, and unlike the existing page level banding, this is hidden from the target device.
Ghostscript can now collect information for pages in temp files (in Ghostscript's clist format), then render and output pages for the job in arbitrary order, including normal, reverse, odd, even, or any order or subset of the pages. This is controlled with the --saved-page=___ option. (Note that this only applies to rendering devices, and not high level devices such as pdfwrite and ps2write.) See: Deferred Page Rendering
The Ghostscript device architecture has been extended so that, when rendering bands into multiple threads, it is now possible to perform post-processing in multiple threads, such as downscale, post-render halftoning, or compression. Previously, post processing was only possible in the single main thread. This can improve performance significantly.
Ghostscript has a new "pwgraster" output device for PWG Raster output
The CUPS device now has improved support for PPD-less printing
Plus the usual round of bug fixes, compatibility changes, and incremental improvements.
Upstream removed cups support and created a new "cups-filter" package
instead. Since then, building ghostscript-agpl with the cups option
has failed. This commit removes the cups option, and should result in
zero changes to packages built without the cups option, and hence does
not PKGREVISION++.
There is still some cups configure code, which is forced off (as it
was without the option). It's not clear if this configure code should
also be removed (by upstream), or if it's a separate bit of cups
functionality. Addressing this issue and adding a cups-filter package
is left for future work, after the branch.
* Background printing (BGPrint) is a new feature allowing an accumulated page clist to be rendered by one or more rendering threads whilst the interpreter (in the "main" thread) continues to accumulate the subsequent page's clist. For certain classes of file this can result in a useful performance increase.
* GrayDetection allows suitably written devices to detect "color" input in near neutral tones (i.e. near monochrome) and to convert "on-the-fly" to pure grayscale, whilst retaining the ability to print full color on demand. This is primarily aimed at workflows where saving ink (especially color inks) is required.
* LittleCMS2 and libpng have both been updated to the latest versions.
* Support has been added to build the Ghostscript DLL for WinRT for x86, x64 and ARM (Requires MS Visual Studio 2012 Pro).
* Processing of Windows command line arguments into UTF8 (as presaged a few releases ago) has been enhanced and enabled by default.
* The URW Postscript font set has been updated to the latest version, fixing many compatibility problems with the Adobe fonts.
* Plus the usual round of bug fixes, compatibility changes, and incremental improvements.