ps2ps2: Converts Postscript Level 3 or PDF into Postscript Level 2

Table of contents

For other information, see the Ghostscript overview.


Overview

ps2ps2 is a script for converting a PDF or a Postscript Level 3 into Postscript Level 2.

ps2ps2 is implemented as a very small command script (batch file) that invokes Ghostscript, selecting a special "output device" called ps2write. In order to use ps2ps2, the ps2write device must be included in the makefile when Ghostscript was compiled; see the documentation on building Ghostscript for details: this is currently the case on all platforms, in Ghostscript as we distribute it.


Usage

The usage for ps2ps2 is

ps2ps2 [options] input.{ps|eps|pdf} output.ps

Options

The options given on the command line may include any switches valid for use with Ghostscript's PostScript and PDF interpreter (see here for a complete list).

Since ps2write makes use of some printer parameters when converting high level objects into Level 2 objects, we strongly recommend setting those values appropriately for the target printer or other output device. In particular, it is important that Output resolution, -dFIXEDMEDIA, and ProcessColorModel to be set correctly.

Important : If the target printer can't handle a particular font type, ps2write converts the fonts into a bitmap fonts representation, using the resolution specified when ps2write is invoked. In particular this can happen with CID fonts, which are not Postscript Level 2 objects. In general these are converted to multiple instances of other font types) Therefore the page device parameter PageSize must match the target printer, and we recommend setting the PageSize entry of the Policies dictionary to 3, in order to provide correct page scaling in the Postscript interpreter when ps2write is invoked.

More importantly, options passed to ps2ps2 may include -dparameter=value or -sparameter=string switches for setting "distiller parameters", Adobe's documented parameters for controlling the conversion process. The PostScript setdistillerparams and currentdistillerparams operators are also recognized when running ps2ps2, and provide an equivalent way to set these parameters from within the PostScript input file.

The ps2write device handles the same set of distiller parameters as are handled by the pdfwrite device. See the PostScript-to-PDF converter documentation for a complete description of how to use them to control the document conversion.

The following options may be important for ps2ps2 due to the target printer features:

-dPatternImagemask=boolean,
-dMaxClipPathSize=integer,
-dMaxShadingBitmapSize=integer,
-dHaveTrueTypes=boolean.
See PostScript-to-PDF converter for details. The option -dMaxInlineImageSize=integer must not be used with ps2ps2.

This set includes all of the Acrobat Distiller 5 parameters defined in the DistillerParameters document included in the Acrobat SDK. Default values are same as the printer settings defined in PostScript-to-PDF converter, with these exceptions:

/PreserveHalftoneInfo true,
/TransferFunctionInfo /Preserve,
/CompressPages true,
/CompressFonts true,
/ASCII85EncodePages true,

There are also the following ps2write specific options :

-dProduceDSC=boolean
Default value is true. When this value is true the output PostScript file will be constructed in a way which is compatible with the Adobe Document Structuring Convention, and will include a set of comments appropriate for use by document managers which enables features such as page extraction, N-up printing and so on to be performed. When set to false, the output file will no be DSC-compliant, but will contain a valid PDF file wrapped up in a PostScript header. This is a change as of version 9.01 of Ghostscript, previously there was no DSC-compliant output from ps2write, and the behviour was as the case when ProduceDSC is false.
-dCompressEntireFile=boolean
When this parameter is true, the LZWEncode and ASCII85Encode filters will be applied to the entire output file. In this case CompressPages should be false to prevent a dual compression. When this parameter is false, these filters will be applied to the initial procset only, if CompressPages is true. Default value is false.

Note: It is not possible to set CompressEntireFile when ProduceDSC is true as a single compressed object cannot conform to the DSC. It is possible to set CompressPages which will also compress the ps2write ProcSet.

Ghostscript PS2 Printer Description

Not implemented yet.


Controlling the printer behavior

A few options can be used to control the behavior of the printer or program that reads the result of ps2ps2. These options cannot be used if ProduceDSC is true, as they break the page-independence required for DSC files.

-dRotatePages=boolean.
The printer will rotate pages for a better fitting into the real page size. Default value : false. Must be false if -dSetPageSize=true.
-dFitPages=boolean.
The printer will scale pages down to fit into the real page size. The rendering quality may be poor due to the scaling, especially for fonts which Ghostscript had converted into bitmaps (see the ps2write device parameter HaveTrueTypes; See Options about the PageSize entry of the Policies dictionary while the conversion step). Default value : false. Must be false if -dSetPageSize=true or -dCenterPages=true.
-dCenterPages=boolean.
The printer will center the page image on the selected media. Compatible with -dRotatePages=true, which may rotate the image on the media if it fits better, and then center it. Default value : false. Must be false if -dSetPageSize=true or -dFitPages=true.
-dSetPageSize=boolean.
The printer will try to set page size from the job. Only use with printers which can handle random PageSize. Must be false if -dRotatePages=true, -dCenterPages=true or -dFitPages=true.
-dDoNumCopies=boolean.
The PostScript emitted by ps2write will try to use copypage to create the number of copies originally requested. Note that this relies on the level 2 semantics for copypage and will not reliably work on language level 3 devices (such as Ghostscript itself). Defaults to false. This flag is not compatible with the ProduceDSC flag which will take precedence if set.

These correspond to keys in the Postscript userdict of the target printer's virtual memory to control its behavior while executing a job generated with ps2ps2.

These keys can be set when executing ps2ps2 (or using the ps2write device), this 'fixes' the resulting behaviour according to which key has been set. If these keys are not defined during conversion, the resulting PostScript will not attempt any form of media selection. In this case the behaviour can then be modified by setting the keys, either by modifying the resulting PostScript or setting the values in some other manner on the target device.


Limitations

Attempting to generate a device independent Postscript Level 2 is a bad idea. Postscript Level 2 data are device dependent by definition. Let Ghostscript know the features of the specific printer as described in Options while generating a printer job.

ps2ps2 provides a simplified interface to the Ghostscript command line. It is not possible to use -c option or pass multiple source files. For unrestricted access to the command line parameters, use Ghostscript directly. E.g. :

gs -q -dSAFER -dNOPAUSE -dBATCH -sOutputFile=file.ps [more options] \
  -sDEVICE=ps2write
source1.pdf [more files]

Copyright © 2000-2006 Artifex Software, Inc. All rights reserved.

This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at http://www.artifex.com/ or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information.

Ghostscript version 9.07, 12 February 2013