(v13) The setteestream operator
This page applies to Harlequin v13.1r0 and later; both Harlequin Core and Harlequin MultiRIP
statusdict string
setteestream -
Provides a local seekable copy of streamed input in the file named by string . It is not efficient to use this operator for jobs available as local seekable files, or for PDF input (which is independently copied to a local file if provided over streaming input). Also, this operator does not provide a complete copy of multi-file jobs such as TIFF/IT-P1 and DCS files printed directly. DCS and OPI references within a job are not affected.
Note:
Any operation that resets the standard input %stdin%
such as use of the setstdio
operator will cause setteestream
to restart its local file copy from the beginning, losing any content copied up to that point. For example, when using the spool folder, the initial control job which runs the main file is lost while the main file is captured.
Note: This operator is not available in watermark RIPs.
Example:
(local_copy/my_copy.ps) setteestream
creates a file called my_copy.ps
in the SW/local_copy
folder. You can use this operator in a page feature, as follows:
(%os%mystream.ps) statusdict /setteestream get exec
Because input channels can run queries that do not draw anything, for example AppleTalk can run font queries, or run font download jobs, you may want to treat such jobs differently. On the basis of the page feature example above, you can use the StartPainting
hook, described in (v13) Other pagedevice hooks and history
, to specify the handling of non-graphic and graphic jobs:
<<
/StartPainting <<
/MyGraphicJob {globaldict /graphicjob true put} bind
>>
/EndJob <<
/MyEndJob {
globaldict /graphicjob known {
%code to handle graphics jobs, if any, here (%os%mystream.ps) (%os%mystreamcompleted.ps) renamefile
} {
%code to handle non-graphic jobs here
(non-graphic job) == (%os%mystream.ps) deletefile
} ifelse
} bind
>>
>> setpagedevice
If you just want to capture a job and not render anything, for example, as part of a workflow system, you can use the user parameter (v13) NeverRender (user param) in the page feature. Alternatively, you can use the (v13) PageRange (page device) key with an empty array value so that no pages are rendered, which is more efficient.
Once you determine a job is a graphic job, you can completely suppress interpretation whilst continuing to capture the input stream by flushing the file in the StartPainting
hook using the file operator flushfile
.