Advanced Imposition using the HqnImpose2 procset
This page applies to Harlequin v13.1r0 and later; both Harlequin Core and Harlequin MultiRIP.
GGS has included a very powerful and flexible set of procedures for controlling imposition in the RIP. They have been carefully designed to offer an extensible set of features without sacrificing ease of use. While some of the very basic functions required for imposition are included in the core of the Harlequin RIP itself, most of the real work required to position and ornament pages is to be found in a collection of PostScript-language code saved as a PostScript Level 2 ProcSet resource, called HqnImpose2
. When this procset is loaded a report is written to the log file (and to the system monitor in Harlequin MultiRIP), noting the version of the “in-RIP imposition support” installed. This is the HqnImpose2
procset version.
The imposition process is divided into two main steps:
- Determination of how many pages will be drawn per imposition flat, and of page orientation, gutters, and so on.
- Allocation of individual pages within a flat to particular positions on the flat.
In addition, support is included for subsidiary functions such as text and graphic underlays and overlays for individual pages, automatic drawing of crop marks, page labels, step wedges and registration marks, and so on.
The first step of determining page counts is controlled by a procedure called an objective. A number of objectives are supplied as standard, and an OEM or end user may freely add new ones.
Requirements for imposition usually fall into one of two groups:
- The necessity to save film or otherwise improve the efficiency of output or
- A need to expose imposed flats pre-stripped for plate making. Most of the supplied objectives work to place pages in a grid on the flat, with all pages oriented in the same way and with uniform gutters between pages. These effectively meet the first group of requirements.
Imposition signatures intended to provide final, stripped, film vary significantly with the finishing machines, paper, page sizes, etc. No "global" routines can be supplied. Designing such schemes requires a more sophisticated user interface than this procset is intended to provide. It is however, perfectly possible for an OEM or user to extend the functionality supplied and to place pages ad lib. Indeed some support is provided for front-end imposition programs which simply request that each flat contain a certain number of pages, and that each should be positioned with its origin at a particular place, and that it be oriented at a particular angle, thus simplifying the writing of an imposition program. For more details see HqnImpose2 PassThrough objective.
When used in combination with the pdfopen
and pdfexecid
operators and the PageRange
value for controlling pdfexecid
, more complex impositions can be constructed using only a small PostScript-language control file (see PDF support in Harlequin for more information).
Most objectives supplied use two additional flags for fine control; the strategy has different effects dependent upon the objective with which it is used, while the aspect defines the orientation of the final page within the flat. In both these cases and others used in more minor roles, the /Strategy
and /Aspect
flags are defined as PostScript-language keys. There is no intention here that they should be used as keys into dictionaries (although that is done at some points as a simple and convenient way to check for errors and so on); the key format is used because it allows simple, mnemonic values to be selected.
Once page counts and grid layout have been determined by the objective, the second step of allocating precise locations within the flat to individual pages is performed by a procedure called a tactic. Again a number of standard tactics are supplied and you are free to extend the options available if desired.
The HqnImpose2
procset makes use of the BeginPage
, EndPage
, and SensePageDevice
features of the page device, and also sets Imposition
in the page device to true
. If an attempt is made to combine code calling this procset with other imposition code, a warning is issued and the current job stopped. Combining separately written imposition code is likely to cause unexpected results and is not recommended. Note that some plugins already use imposition code under some circumstances, most notably color printers.