OPC-UA Interface Guide (Smart Connectivity)
Smart Print Controller v5.5.0.8498, Copyright (c) 2023 Global Graphics Software. All rights reserved.
Overview
Smart Print Controller provides a user with two conceptual methods of operations:
- Engineer - Installation and setup.
- Operator - Manage job submission and review progress.
This 'operator' level of operation can be driven from external clients using an industry-standard interface.
When the Open Platform Communications (OPC) server in Smart Print Controller is enabled an OPC node tree is published. The top-level nodes in this tree represent grouped areas of state and functionality. For example, the Servers section allows:
- the RIP Server list to be enumerated.
- the server connection status to be examined.
- all servers to be restarted.
- ...and more.
Certificates
Communication between OPC UA clients and servers require both parties to possess their own application certificate. To enable further communication each party must trust the opposing certificate. This trust can be established automatically, programmatically or manually depending on the application's configuration or implementation.
The certificate for Smart Print Controller can be found in %programdata%\Global Graphics Software Ltd\Smart Print Controller\App Certificates\certs should you need to copy it to the Trusted Peer Certificate folder. In this release it is a Self Signed Certificate issued by and for Smart Print Controller.
OPC Nodes
The OPC node mechanism will report when any state changes, allowing clients to react accordingly.
While most exposed values can be read by a client, write-access (or calling a method to request a state change in Smart Print Controller) requires External Control to be granted (See App.IsExternalControlActive). This is an action explicitly performed by the Smart Print Controller operator, resulting in control of the application to be given to the OPC client.
Server Mode
If Smart Print Controller is launched with a /ServerMode command-line argument the application will be launched minimized, with OPC automatically enabled and External Control granted.
Additionally, /Silent will disable the application splash screen and any taskbar messages that would otherwise be displayed.
Setting App.ServerModeLocked will ensure the application window stays minimized, with no option to be restored to the screen.
OPC Methods
Many published OPC method nodes return a String value indicating their success or error state. In all such cases a check for Success indicates success, and any other value indicates an error.
| Return Value | Description |
|---|---|
Success | The request completed successfully. |
IncompatibleSmd | The media's printer profile differs from the 'active' profile. |
PrintRunIsActive | Direct printing cannot interrupt an active print run. |
NoServers | At least one server is required for printing. |
FeatureIsDisabled | Cannot execute the request. (External control not granted?) |
PendingConnection | The HD connection(s) must be connected or disconnected - Not pending. |
FailedToSetConfigs | Failed to update the HD configs to the values required for printing. |
FailedToRestoreConfigs | Failed to restore the HD configs to the original values. |
FailedToPreprocess | The PDF could not be preprocessed. |
PreprocessingFailed | The PDF was preprocessed, but was invalid (E.g. It contains non-embedded fonts). |
FailedToStartPrintRun | The print run failed to start. |
FailedToSubmit | Failed to submit the job to the server(s). |
FailedToPrint | The job was submitted, but failed to print. |
ItemNotFound | The specified item was not found. |
CommandCannotExecute | A command could not run because its execution criteria was not met. |
PrintBarNotFound | The print bar does not appear in the printer profile. |
FailedToLoadAppConfig | Failed to load an application SPC configuration. |
RequestDenied | The conditions needed to perform the action were not satisfied. |
ServerIsDisabled | The specified server is disabled. |
InvalidParameter | One or more of the parameters were invalid. |
InvalidPageRange | Invalid page range or document repeat. |
FailedToSetPageRange | Failed to set the page range of a job. |
FailedVerticalSlicing | Failed to apply vertical slicing to a job. |
OperationFailed | The requested operation failed to succeed. |
Any methods returning data (for example JSON or comma-separated values) will be explicitly documented. Callers should validate returned data format to determine success (otherwise one of the above errors may be returned).
Any methods listed in this documentation include details about required parameters (if any) and return values.
In the event of an error, please see the Smart Print Controller log file for more information.
OPC Client Library
The following documentation provides guidance on using the Traeger Industry Components GmbH OPC client library for software developers working with Smart Print Controller.
Configuring Custom Message Sizes
The default maximum message sizes used by OPC clients to communicate to the server are sufficient for most use cases. However, to ensure transfer of larger data packets it may be necessary to configure the OPC client with custom values.
For example:
Client = new OpcClient();
Client.Transport.MaxArrayLength = 1024 * 1024 * 50;
Client.Transport.MaxBufferSize = 1024 * 1024 * 50;
Client.Transport.MaxMessageSize = 1024 * 1024 * 50;
Client.Transport.MaxStringLength = 1024 * 1024 * 50;
See here for more information.
Adjusting Communication Timeouts
OPC clients regularly verify the responsiveness of the connection to the OPC server. However, in certain circumstances where the system is under heavy load, maintaining a responsive connection might not always be possible. To mitigate potential issues under such conditions, it is recommended to increase the default communication timeouts.
The example below demonstrates how to adjust the default values:
var defaultTimeOut = (int)TimeSpan.FromMinutes(10).TotalMilliseconds;
Client = new OpcClient
{
// Don't auto-disconnect - Dispose the client to explicitly disconnect.
DisconnectTimeout = int.MaxValue,
KeepAlive = { Interval = defaultTimeOut },
SessionTimeout = defaultTimeOut,
OperationTimeout = defaultTimeOut,
ReconnectTimeout = defaultTimeOut
};
Please note that the provided examples serve as illustrations, and it's important to tailor the configuration to your specific requirements.
SPCSet
SPCSet is the top-level set containing all available OPC nodes. Immediately underneath this root-level node are a categorized collection of sub-nodes, each encapsulating a different area of behavior.
| Section Name | Description |
|---|---|
| ActiveJob | State relating to the currently active job. |
| ActiveMedia | State relating to the currently active media. |
| AllJobs | State relating to all jobs in the Waiting/Print/Completed queues. This tree dynamically includes children named from the GUID of each known job. |
| AllMedia | State relating to all available media. |
| AllMedia.SelectedMedia | State relating to the selected media (See AllMedia.SelectedName). |
| App | State relating to the entire application. |
| JobCosting | State relating to job cost estimation. |
| Memory | State relating to available memory on the local machine and the memory required for the local RIP to function. |
| PageSubmitter | State relating to the optional PageSubmitter plugin. |
| PrintBarGroups | State relating to the active print bars. |
| PrinterProfile | State relating to the active printer profile. |
| PrintRun | State relating to the print run. |
| PrintRunConfig | State relating to the print configuration (Applies to both media sides). |
| PrintRunConfig.ConfigSideA | The print configuration specific to media side 'A'. |
| PrintRunConfig.ConfigSideB | The print configuration specific to media side 'B'. |
| Servers | State relating to the collection of RIP Servers. |
| ServiceRip | State relating to the offline Service RIP. |
| SingleJob | Describes the collection of nodes representing a single job, positioned as a child of the WaitingQueue, PrintQueue, or CompletedQueue nodes. |
| StreamlineDirect | State relating to Streamline Direct technology. |
| WaitingQueueOptions | State relating to the behavior of the Waiting queue. |
ActiveJob
State relating to the currently active job.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
CopyCount | Int32 | No | Number of copies to print. Writable only for unlocked jobs in the Waiting queue. |
CurrentPage | UInt32 | No | Page number of the current processed page. |
Guid | String | No | Unique job descriptor. |
HasLiLoEnabled | Boolean | No | Whether or not the job can have lead in and/or lead out pages. |
HasNonEmbeddedFonts | Boolean | No | The result after running job font analysis. |
IsAutotuned | Boolean | No | Whether or not the job has been Autotuned. |
IsLocked | Boolean | No | Whether modifying operations (changes to copy count, job editor, ...) are allowed or not. Writable only for jobs in the Waiting queue. |
IsRipAhead | Boolean | No | Whether the job contains pre-RIPped pages. |
IsStreamlineOptimized | Boolean | No | Whether Streamline Optimize has processed the job. |
JobCostData | String | No | A JSON string representing the data collected during the job cost estimation process. |
JobId | String | No | The job ID received from the .complete file. |
JobLabel | String | No | Property which can be used to group related jobs. |
JobPartId | String | No | The job part ID received from the .complete file. |
JobTag | String | No | Property which can be used to attach arbitrary state to a job. The source of the state comes from an optional JobTag string field in the .complete JSON file written into the Waiting queue hot folder.The state lasts for the lifetime of the job, and will persist if a job is copied from the Completed queue to the Waiting queue. Writable only for jobs in the Waiting queue. |
LeadInCount | Int32 | No | Count of the lead in pages. |
LeadInThumbnail | String | No | BASE64-encoded representation of the lead in page thumbnail PNG data. |
LeadOutCount | Int32 | No | Count of the lead out pages. |
LeadOutThumbnail | String | No | BASE64-encoded representation of the lead out page thumbnail PNG data. |
Name | String | No | The job name (from the original job file name). |
PageCount | Int64 | No | Page count of the document. |
PageHeightMm | Double | No | Page height (mm). |
PageWidthMm | Double | No | Page width (mm). |
PredictedLineSpeed | Double | No | The Streamline Direct predicted line speed (m/min). |
PredictedLineSpeedIndicator | String | No | The Streamline Direct predicted line speed (Status indicator). Values: Unavailable - Analysis unavailable.Red - Unable to achieve target speed.Amber - Should achieve target speed.Green - Will achieve target speed. |
Printability | String | No | A comma-separated list of issues indicating if a job is printable, with the most serious being 'Error'. Values: UnknownPrintable - The job is printable.WarningProtrusion - The job has some printability issues, but can still be printedWarningProtrusionSideA - The job will protrude the media on Side A.WarningNonEmbeddedFonts - The job has some printability issues, but can potentially still be printed.WarningProtrusionSideB - The job will protrude the media on Side B.Error - The job cannot be printed.StreamlineIssues - Streamline issues detected.MediaMismatch - The job requires a media that is not currently active.DuplexModeMismatch - The job's duplex mode does not match the one chosen in the setup pane. |
Producer | String | No | Original producer of the PDF. |
RestartPage | Int32 | No | The page number at which to start printing the job. (Default: 1)Writable only for jobs in the Waiting queue. |
StartTime | String | No | When the job started printing (ISO 8601). |
TargetMedia | String | No | The intended media to use when printing the job. |
Thumbnail | String | No | BASE64-encoded representation of the job thumbnail PNG data. |
TotalPageCount | Int64 | No | Page count of the printed document (PageCount * CopyCount + 'LeadInCount' + 'LeadOutCount'). |
ActiveMedia
State relating to the currently active media.
Details
The active media is the one actually being used to print.
The selected media (See AllMedia.SelectedName) is the one highlighted in the application UI.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AllowColorManagement | Boolean | Yes | Whether color management (E.g. ICC profiles) is enabled. NOTE Modification requires external control. |
CalibrationDate | String[] | No | The date that the PrintFlat calibration was applied to each colorant, if applicable. Entries match the order of the Colorants list. |
CmykImagesIntentOverride | String | No | This intent overrides all CMYK images. This setting also applies to gray images when ColorManageGrayAsCmyk is true.Values: RelativeColorimetric, Perceptual, Saturation, AbsoluteColorimetric |
ColorantCurves | String[] | No | Collection of colorant calibration curves. Entries match the order of the Colorants list. |
Colorants | String[] | No | Collection of supported colorant names. |
ColorManageGrayAsCmyk | Boolean | No | Whether to process gray with CMYK color management. |
Description | String | No | Description of the media. |
DeviceEmulationIccProfile | String | No | Name of the media's device emulation ICC profile. (See EmulateAnotherPrinter) |
EmulateAnotherPrinter | Boolean | No | Whether the device emulation ICC profile will be used. |
HasCalibrationApplied | Boolean[] | No | Whether or not a PrintFlat Calibration has been applied to each colorant. Entries match the order of the Colorants list. |
InputCmykIccProfile | String | No | Name of the media's input CMYK ICC profile. |
InputGrayIccProfile | String | No | Name of the media's input Gray ICC profile. (See ColorManageGrayAsCmyk) |
InputRgbIccProfile | String | No | Name of the media's input RGB ICC profile. |
KeepTextBlack | Boolean | No | Whether to keep text black. |
MainRenderingIntent | String | No | This is the default rendering intent. The rendering intents in the document overrides it. Values: RelativeColorimetric, Perceptual, Saturation, AbsoluteColorimetric |
Name | String | No | The active media name. |
OutputIccProfile | String | No | Name of the media's output ICC profile. |
OverrideColorManagementInPdf | Boolean | No | Whether to override the color management specified in the PDF. |
Preserve100Black | Boolean | No | Whether to preserve 100% black. |
RgbImagesIntentOverride | String | No | This intent overrides all RGB images. Values: RelativeColorimetric, Perceptual, Saturation, AbsoluteColorimetric |
TotalAreaCoverage | String | No | This is the Total Area Coverage for the job. |
WidthMm | Double | No | The media width in mm. |
AllJobs
State relating to all jobs in the Waiting/Print/Completed queues. This tree dynamically includes children named from the GUID of each known job.
Details
These OPC nodes are fully populated to a consistent state when the OPC server starts, apart from job GUIDs - These nodes are dynamically added and removed as jobs are added and removed to/from the workflow.
(If there are already jobs in the workflow, these GUIDs will exist when the OPC server starts.)
When a job is added to the Waiting queue a GUID node is created containing the job information (containing the same tag names as the ActiveJob node) and that GUID is added to the WaitingQueue array.
The job keeps the same GUID as is travels through the system, moving between the WaitingQueue, PrintQueue, and CompletedQueue arrays.
The GUID node is removed when the job is removed from the workflow.
See the SingleJob section for a description of all available job-level nodes.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AutoPrintWaitingQueueJobs | Boolean | Yes | When enabled, jobs in the Waiting queue will automatically move to the Print queue. NOTE Only jobs eligible for printing are included. NOTE Modification requires external control. |
AutoStopPrintRun | Boolean | Yes | When enabled, the print run is automatically stopped when all jobs have been printed. NOTE Modification requires external control. |
CompletedQueue | String[] | No | Collection of ordered GUIDs representing the jobs in the Completed queue. |
CompletedQueueEvents | Int32 | No | Count of node changes made to jobs within the Completed queue. |
JobOpenInJobEditor | Null | No | The GUID of the job open in Job Editor. An empty string means no job is open. |
MonitorJobPerformance | Boolean | Yes | For internal use only. NOTE Changes must be applied using App.ApplySettings() before they take effect on the server(s).NOTE Modification requires external control. |
PrintQueue | String[] | No | Collection of ordered GUIDs representing the jobs in the Print queue. |
PrintQueueEvents | Int32 | No | Count of node changes made to jobs within the Print queue. |
TransferAllJobs | Boolean | Yes | When enabled, the print run will copy all jobs over before we start printing. NOTE Modification requires external control. |
WaitingQueue | String[] | No | Collection of ordered GUIDs representing the jobs in the Waiting queue. |
WaitingQueueEvents | Int32 | No | Count of node changes made to jobs within the Waiting queue. |
Methods
| Name | Returns | Description |
|---|---|---|
CancelJob(String jobGuid) | String | Cancel a job in the Print queue. (Requires external control) |
CancelSelectedJobs() | String | Cancel the selected jobs in the Print Queue. (Requires external control) |
ChangeActiveMedia(String mediaName) | String | Change the active media of the print run. (Requires external control) |
ChangeSelectedJobsTargetMedia(String targetMediaName) | String | Change the target media of selected jobs from the Waiting queue. (Requires external control) |
ClearCompletedQueue() | String | Remove all jobs from the Completed queue. (Requires external control) |
ClearSelectedCompletedQueueJobs() | String | Clear selected jobs from the Completed queue. (Requires external control) |
ClearSelectedPrintQueueJobs() | String | Clear selected jobs from the Print queue. (Requires external control) |
ClearSelectedWaitingQueueJobs() | String | Clear selected jobs from the Waiting queue. (Requires external control) |
ClearWaitingQueue() | String | Remove all jobs from the Waiting queue. (Requires external control) |
DuplicateJob(String jobGuid) | String | Duplicate a job in the Waiting queue. (Requires external control) |
DuplicateJobWithName(String jobGuid, String jobName) | String | Duplicate a job in the Waiting queue with a new name. (Requires external control) NOTE The job name cannot contain illegal file path characters < > : " / \ | ? * NOTE The job name cannot be the same as a reserved file name. |
DuplicateJobWithNameAndPageSelection(String jobGuid, String jobName, String pageSelection) | String | Duplicate a job in the Waiting queue with a new name and a set of selected pages. (Requires external control) NOTE The job name cannot contain illegal file path characters < > : " / \ | ? * NOTE The job name cannot be the same as a reserved file name. NOTE You must provide a valid set of selected pages for the job specified. Refer to the Page Ranges section of the Smart Print Controller User Guide for more information on valid page selections. |
DuplicateSelectedJobs() | String | Duplicates the selected jobs in the Waiting Queue. (Requires external control) All duplicates will be suffixed with the string ' - Copy'. |
ExportJobsToFile(String jobGuids, String jobsFile) | String | Export one or more jobs to a new .jobs file.NOTE jobGuids is a comma-separated list of job GUIDs.NOTE If the output file already exists it will be overwritten. |
FinalizeWaitingQueueJobUpload(String jobName, String jobOptionsJson) | String | Finalize a previously uploaded Waiting Queue job and create the queue entry. This is the second step of the two-step Waiting Queue job submission workflow. It completes a file upload started with LoadWaitingQueueJobFileChunk, creates the Waiting Queue job, and applies any supplied job metadata.NOTE This method must only be called after LoadWaitingQueueJobFileChunk has completed successfully for the same job name.NOTE The finalized job is created in the Waiting queue. |
GetJobPageTimings(String jobGuid, Int32 serverIndex) | String | Returns per-page RIP timings (seconds) for a single completed job. (Requires external control) Returns data the form: <PageNumber>:<Interpretation>,<Composite>,<RenderPrepare>,<Print>,<HD_RIP>;...NOTE Must be called after the job has completed and the print run ends, and before a new print run is started. NOTE If multiple copies are printed, only data from the first is collected. NOTE Requires AllJobs.MonitorJobPerformance to be enabled and applied prior to printing. |
ImportJobsFromFile(String jobsFile) | String | Import one or more jobs from a .jobs file.NOTE All jobs will be imported into the Waiting queue. |
LoadWaitingQueueJobFileChunk(String jobName, Byte[] chunkData, Int32 chunkSize) | String | Upload a Waiting Queue job file in chunks, ready for later finalization. This is the first step of a two-step Waiting Queue job submission workflow. It uploads the raw job file over OPC, one chunk at a time, and stores it temporarily until FinalizeWaitingQueueJobUpload is called.Due to potential OPC library limitations on binary data transfer size, the file is uploaded in chunks. Implementers should use the largest chunk size supported by their OPC library for optimal performance. Callers must set chunkSize to the number of bytes to read from the chunkData array.A value of 0 indicates that the file upload is complete and ready to be finalized.A value of -1 aborts the in-progress upload and discards the temporary file.NOTE Uploading the file does not itself create a Waiting Queue job. Call FinalizeWaitingQueueJobUpload afterwards to create the job and apply metadata. |
MoveSelectedCompletedQueueJobs() | String | Copy selected jobs from the Completed queue to the Waiting queue. (Requires external control) |
MoveSelectedPrintQueueJobs() | String | Move selected jobs from the Print queue to the Waiting queue. (Requires external control) |
MoveSelectedWaitingQueueJobs() | String | Move selected jobs from the Waiting queue to the Print queue. (Requires external control) |
RemoveJob(String jobGuid) | String | Remove a job from any queue. (Requires external control) NOTE A locked job in the waiting queue is considered read-only. |
ResubmitJob(String jobGuid) | String | Resubmit a job from the Completed queue to the Waiting queue. (Requires external control) |
SendSelectedJobsToPrePress() | String | Sends the selected jobs in the Waiting queue to the Pre-Press folder. (Requires external control) |
SendToJobEditor(String jobGuid) | String | Open a job in Job Editor. (Requires external control) NOTE Only one job can be open in Job Editor at any given time. |
SendToPrePress(String jobGuid) | String | Move a job from the Waiting queue to the Pre-Press folder. (Requires external control) |
SendToPrintQueue(String jobGuid) | String | Move a job from the Waiting queue to the Print queue. (Requires external control) |
SetPageRange(String jobGuid, String pageRange, String documentRepeat) | String | Set the page range of a job, rebuilding the PDF with the pages specified. (Requires external control) NOTE Must be called on a job in the Waiting Queue. NOTE documentRepeat groups pages. If documentRepeat is provided, the pageRange is applied to all page groups. |
SetVerticalSlicing(String jobGuid, Double start, Double width, String units) | String | Applies vertical slicing to the job. (Requires external control) NOTE Must be called on a job in the Waiting Queue. NOTE The units must be specified as 'mm' or 'inches'. |
AllMedia
State relating to all available media.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
MediaGroupFilter | Int32 | Yes | The media group filter. When set to 0 all available media will be reported by AllMedia.MediaNames.Any other value will cause AllMedia.MediaNames to be filtered to show only media with a matching group value. |
MediaNames | String[] | No | Collection of all available media names. NOTE Media which is incompatible with the current setup will be excluded. |
SelectedMediaForIO | String | Yes | Call prior to using the MediaDataIO node. (See InstallMedia()). |
SelectedName | String | Yes | The selected media name (which may differ from the applied media name). Valid values can be obtained from MediaNames.Examine the AllMedia.SelectedMedia node tree to see properties of the selected media.NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
SuppressedInkNames | String | Yes | User-definable comma-separated list of ink names to suppress. (Requires external control) NOTE Changes must be applied using App.ApplySettings() before they take effect on the server(s).NOTE This setting does not persist between application sessions. NOTE Modification requires external control. |
Methods
| Name | Returns | Description |
|---|---|---|
DeleteMedia(String mediaName) | String | Permanently delete the named media (Use with caution). (Requires external control) NOTE At least one media entry must always exist. NOTE The active media should not be deleted. |
InspectMedia() | String | Inspect the contents of a .smd media file. (Requires external control)Prior to calling InspectMedia() clients should:- Set SelectedMediaForIO to a unique GUID (which is internally used to reference the media).- Use the MediaDataIO OPC file object to write the .smd file data. (Closing after use.)The returned value is JSON in the following format: - String: Name- String: Description- Double: WidthMm- Bool: DisableColorManagementNOTE The values returned may be extended in future. |
InstallMedia() | String | Install a new .smd media file.Prior to calling InstallMedia() clients should:- Set SelectedMediaForIO to a unique GUID (which is internally used to reference the media).- Use the MediaDataIO OPC file object to write the .smd file data. (Closing after use.)NOTE Any existing media with the same name will be overwritten. |
InstallMediaWithName(String name) | String | Install a new .smd media file with the name provided.Prior to calling InstallMediaWithName() clients should:- Set SelectedMediaForIO to a unique GUID (which is internally used to reference the media).- Use the MediaDataIO OPC file object to write the .smd file data. (Closing after use.)NOTE Any existing media with the same name will be overwritten. NOTE If the new name is null or empty, the media will be installed with its existing name. |
Files
| Name | Description |
|---|---|
MediaDataIO | Allows read/write access to an SMD file. (See SelectedMediaForIO) |
NOTE OPC File nodes contain functions which allow access to file content:
Open(int fileAccess)- Open the file with the specifiedfileAccess(1:read,2:write), returning an integer file handle.Read(int fileHandle, int length)- Read data from an open file handle, returning an array of bytes.Write(int fileHandle, byte[] buffer)- Write/append data to an open file handle.Close(int fileHandle)- Close the file handle after use.
For more information see the OPC documentation.
AllMedia.SelectedMedia
State relating to the selected media (See AllMedia.SelectedName).
Details
Note that when setting new media properties the changes are set in the Smart Media immediately, but changes must be applied using App.ApplySettings() before they take effect on the server(s).
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AllowColorManagement | Boolean | Yes | Whether color management (E.g. ICC profiles) is enabled. NOTE Modification requires external control. |
CalibrationDate | String[] | No | The date that the PrintFlat calibration was applied to each colorant, if applicable. Entries match the order of the Colorants list. |
CmykImagesIntentOverride | String | Yes | This intent overrides all CMYK images. This setting also applies to gray images when ColorManageGrayAsCmyk is true.Values: RelativeColorimetric, Perceptual, Saturation, AbsoluteColorimetricNOTE Modification requires external control. |
ColorantCurves | String[] | No | Collection of colorant calibration curves. Entries match the order of the Colorants list. |
Colorants | String[] | No | Collection of supported colorant names. |
ColorManageGrayAsCmyk | Boolean | Yes | Whether to process gray with CMYK color management. NOTE Requires InputGrayIccProfile to be defined.NOTE Modification requires external control. |
Description | String | Yes | Description of the media. NOTE Modification requires external control. |
DeviceEmulationIccProfile | String | No | Name of the media's device emulation ICC profile. (See EmulateAnotherPrinter) |
EmulateAnotherPrinter | Boolean | Yes | Whether the device emulation ICC profile will be used. NOTE Requires DeviceEmulationIccProfile to be defined.NOTE Modification requires external control. |
HasCalibrationApplied | Boolean[] | No | Whether or not a PrintFlat Calibration has been applied to each colorant. Entries match the order of the Colorants list. |
InputCmykIccProfile | String | No | Name of the media's input CMYK ICC profile. |
InputGrayIccProfile | String | No | Name of the media's input Gray ICC profile. (See ColorManageGrayAsCmyk) |
InputRgbIccProfile | String | No | Name of the media's input RGB ICC profile. |
KeepTextBlack | Boolean | Yes | Whether to keep text black. NOTE Modification requires external control. |
MainRenderingIntent | String | Yes | This is the default rendering intent. The rendering intents in the document overrides it. Values: RelativeColorimetric, Perceptual, Saturation, AbsoluteColorimetricNOTE Modification requires external control. |
Name | String | No | The selected media name. |
OutputIccProfile | String | No | Name of the media's output ICC profile. |
OverrideColorManagementInPdf | Boolean | Yes | Whether to override the color management specified in the PDF. NOTE Modification requires external control. |
Preserve100Black | Boolean | Yes | Whether to preserve 100% black. NOTE Modification requires external control. |
RgbImagesIntentOverride | String | Yes | This intent overrides all RGB images. Values: RelativeColorimetric, Perceptual, Saturation, AbsoluteColorimetricNOTE Modification requires external control. |
TotalAreaCoverage | String | No | This is the Total Area Coverage for the job. |
WidthMm | Double | Yes | The media width in mm. NOTE Modification requires external control. |
Methods
| Name | Returns | Description |
|---|---|---|
RemoveScalingSettingsFromSelectedMedia() | String | Remove the print bar group scaling settings from the selected media. (Requires external control) The scaling settings for the selected media will immediately revert back to the scaling settings that were last applied using App.ApplySettings(). |
SaveScalingSettingsToSelectedMedia() | String | Save the print bar group scaling settings to the selected media. (Requires external control) This saves all of the values for VerticalScaling and HorizontalScaling, so that they are remembered when this media is next selected. |
SetColorantCurve(String colorantName, String csvCurve, Boolean reserved) | String | Allows the calibration curve associated with a known colorant to be modified. (Requires external control) NOTE Curve data must be presented as a list of comma-separated values. NOTE Curve data must define an even number of values ranging from X=0.0 to X=1.0 |
SetDeviceEmulationIccProfile(String iccFileName) | String | Install an ICC profile into the selected media. (Requires external control) NOTE iccFileName must specify a file path accessible to the OPC server. |
SetInputCmykIccProfile(String iccFileName) | String | Install an ICC profile into the selected media. (Requires external control) NOTE iccFileName must specify a file path accessible to the OPC server. |
SetInputGrayIccProfile(String iccFileName) | String | Install an ICC profile into the selected media. (Requires external control) NOTE iccFileName must specify a file path accessible to the OPC server. |
SetInputRgbIccProfile(String iccFileName) | String | Install an ICC profile into the selected media. (Requires external control) NOTE iccFileName must specify a file path accessible to the OPC server. |
SetOutputIccProfile(String iccFileName) | String | Install an ICC profile into the selected media. (Requires external control) NOTE iccFileName must specify a file path accessible to the OPC server. |
App
State relating to the entire application.
Details
Some features (such as job costing) require the use of an offline service RIP, allowing for background processing while other job actions are active.
If any RIP servers are currently defined to use 127.0.0.1, the service RIP will not be available (See OpcServiceRip).
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AllowSpotColorEditing | Boolean | Yes | Whether the application allows spot colors to be edited |
CentralizedInkLibraryLocation | String | No | The application's local Centralized Ink Library Location |
ClipboardColors | String | Yes | List of spot colors in clipboard in serialized string form. NOTE This is system automatically generated and should not be modified directly by user. |
DefaultTo16BitOutput | Boolean | Yes | The default 16 bit behavior, when the media does not define a 16 bit behvior. If set to true, the default behavior uses 16 bit output, otherwise the default behavior uses 8 bit output. NOTE Changes must be 'applied' before they take effect. |
Edition | String | No | The edition of the application specified by the license. |
IsExternalControlActive | Boolean | No | Whether the application is allowing clients external control. |
JobAssetsFolder | String | No | The folder in which job assets are located. The assets folder may contain files or folders which accompany the main job files. For example, a .raj folder would indicate that a RIP Ahead job had been created.NOTE The content is managed by the application and should not be modified externally. |
ProductName | String | No | The application product name. |
RipOutputFolder | String | Yes | The folder in which local RIP TIFF output is produced. This folder will not be used for non-local RIPs, or RIPs that do not produce TIFFs. Otherwise, this folder will supersede an output directory defined in the server's custom settings. NOTE Modification requires external control. |
ServerModeLocked | Boolean | Yes | Whether to lock the minimized status of the application UI when running in server mode. OPC clients can use this to prevent the application UI from being visible. |
TotalSheetCount | UInt64 | No | Tally of the total printed sheet count. |
VersionNumber | String | No | Describes the application version number. |
WaitingQueueFolder | String | No | The application's local Waiting queue folder. |
WaitingQueuePercentageSpaceUsed | Int32 | No | The percentage of space used on the disk where the application's local Waiting queue folder is located. |
Methods
| Name | Returns | Description |
|---|---|---|
AddColorToClipboard(String colorSpace, String description, Float[] components) | String | Add a color to clipboard.colorSpace must be one of Lab, CMYK, CMYKO, CMYKG, CMYKV, CMYKOV, CMYKOG, CMYKOGV.description is a string with a maximum length of 31.components is an array for float component values for the color space. The length of the array must be in line with the color space. For example, for Lab, the array should have 3 elements, while for CMYK, it should have 4. The components must be within the defined range for the color space. For Lab color the first component must be in the range between 0 to 100 while the other two in the range between -128 to 127. For all other color spaces, the components must be in the range of 0 to 100. |
ApplySettings() | String | Apply the current application settings and update all RIP Server config files. (Requires external control) Returns Success if the settings were uploaded successfully. |
CreateSupportPackage() | String | Create an SPC support package file. NOTE Must be called before any attempt to read data via SupportPackageFile. |
Exit() | void | Request the application to shut itself down. NOTE Use with care. |
LoadAppConfig(Byte[] spcFileData) | String | Load an SPC application configuration file. (Requires external control) NOTE We recommend using App.LoadAppConfigChunk() to more efficiently apply large configuration files.NOTE Changes must be applied using App.ApplySettings() before they take effect on the server(s). |
LoadAppConfigChunk(Byte[] chunkData, Int32 chunkSize) | String | Load an SPC application configuration file (in chunks). (Requires external control) NOTE Changes must be applied using App.ApplySettings() before they take effect on the server(s).Callers must set chunkSize to the number of bytes to read from the chunkData array.A value of 0 must be sent to indicate the file transfer is complete.A value of -1 must be sent to indicate the transfer should be aborted. |
LogError(String clientId, String message) | void | Allows an OPC client to write an error message into the application log. |
LogInfo(String clientId, String message) | void | Allows an OPC client to write an information message into the application log. |
LogWarning(String clientId, String message) | void | Allows an OPC client to write a warning message into the application log. |
PrintWithSmd(Byte[] pdfFileData, Byte[] smdFileData) | String | For internal use only. (Requires external control) |
RevertSettings() | String | Revert any pending application settings. (Requires external control) |
SetClientIsBusy(String clientId, Boolean isBusy) | void | Allows an OPC client to register it has entered/exited a 'busy' state requiring 'external control'. A server operator disabling 'external control' will receive a warning if a client is within a 'busy' state. clientId must be any string which uniquely identifies the client.NOTE Clients are responsible for ensuring isBusy true/false calls are paired. |
Files
| Name | Description |
|---|---|
LogFile | Allows read-only access to the application log file. |
SupportPackageFile | Allows read-only access to the created support package file. (See CreateSupportPackage) |
NOTE OPC File nodes contain functions which allow access to file content:
Open(int fileAccess)- Open the file with the specifiedfileAccess(1:read,2:write), returning an integer file handle.Read(int fileHandle, int length)- Read data from an open file handle, returning an array of bytes.Write(int fileHandle, byte[] buffer)- Write/append data to an open file handle.Close(int fileHandle)- Close the file handle after use.
For more information see the OPC documentation.
JobCosting
State relating to job cost estimation.
Details
Job cost estimation requires the use of a local service RIP, allowing for background processing while other job actions are active.
Changes to the state in this section are immediate and do not require an explicit 'Apply' action.
To generate a cost report from an SPC-queued job, call ProcessJob().
If successful, the JSON result will either be stored in the job's JobCostData property or in AvailableResults (depending on the parameters passed to ProcessJob()).
If the latter, the AvailableResults array will be updated once processing is complete, and a call to GetReportData() may be performed.
If the job succeeds, GetReportData() will return a JSON string.
If the job fails, GetReportData() will return an empty string.
If the job is cancelled (CancelJobFile()), the AvailableResults array will not be updated, and GetReportData() will not be required.
A scheduled job can be cancelled at any time by calling CancelJobFile().
External control is not required for job costing actions to be performed.
Clients may call App.SetClientIsBusy() to let SPC know its job costing feature is being used.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AvailableResults | String[] | No | A collection of GUIDs representing the completed tasks previously scheduled with a call to ProcessJob()This list is updated each time a new cost estimation is available, and indicates a call to GetReportData() can be performed. |
CostUnit | String | Yes | The default unit of cost. |
DefaultDropVolumes | String[] | Yes | The default drop volume (picoliters) for each drop size, for each ink. The format of each entry is 'InkName:DropSize,DropVolume,...' E.g. Black:1,0.25,2,0.45 |
DefaultInkCosts | String[] | Yes | The default cost of each ink (per liter), in the unit specified by CostUnit.The format of each entry is 'InkName:Cost' E.g. Black:10.50 |
DefaultInkSpecificGravities | String[] | Yes | The default specific gravity of each ink. (The ratio of ink density to the density of water.) The format of each entry is 'InkName:SG' E.g. Black:1.25 |
DefaultMediaCostPerMSq | Double | Yes | The default cost of the media per m². |
ImportRequested | Boolean | Yes | Indication to the client job costing app that a request has been made to import the selected jobs. |
IsJobCostingEnabled | Boolean | Yes | Whether the job cost estimation feature is enabled. (See App.IsServiceRipAvailable)NOTE For the job costing to be active the feature must be enabled, available, and have a valid service RIP connection. |
MeasurementUnit | Int32 | Yes | The default unit used to determine cost. Values: 0 for 'kg', 1 for 'L'. |
RequiredSharedMemoryGb | Double | No | The shared memory requirement for job costing (in gigabytes). This value is not necessarily the same as Memory.RequiredSharedMemoryGbPerRip. |
ServiceCost | Double | Yes | The cost to apply each time a service interval is encountered. |
ServiceIntervalInM | Double | Yes | The media interval at which the service cost is applied. |
UseSmartJobAnalysis | Boolean | Yes | Use optimized job analysis to decrease processing times. |
Methods
| Name | Returns | Description |
|---|---|---|
CancelJobFile(String jobGuid) | String | After calling ProcessJob(), this method will trigger cancellation of the job identified with the job GUID. |
GetReportData(String jobGuid) | String | This method may be called each time the AvailableResults array is updated.The parameter is the GUID of the job to query, obtained from the AvailableResults array.The returned value is a JSON string representing the data collected during the estimation process. After calling GetReportData() the entry will no-longer be available - Further calls will return an empty string. |
ProcessJob(String jobGuid, String mediaNameOverride, Boolean storeResultsWithJob, Boolean exposeViaOpc) | String | This method schedules an SPC job for costing, given the SPC GUID of the job. (See AllJobs) If mediaNameOverride is a non-empty string, it will override the job's associated media.If storeResultsWithJob is true the JSON result will be stored in the job's JobCostData property.If exposeViaOpc is true the JSON result will be stored in AvailableResults.The call is asynchronous - It will return immediately to indicate the job has been queued, and the report will be generated in due course. |
Memory
State relating to available memory on the local machine and the memory required for the local RIP to function.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AvailableSystemMemoryGb | Double | No | The currently available RAM (in gigabytes). This value is taken from the computer that SPC is running on. |
RequiredRipMemoryGbPerRip | Double | No | The maximum memory required for a single RIP (in gigabytes). This value only concerns the RIP server defined at 127.0.0.1.If there is no RIP server defined at 127.0.0.1, this will reflect the required memory for the Service RIP.This value is equivalent to the FarmRipMemory field in the RIP server config. |
RequiredSharedMemoryGbPerRip | Double | No | The required memory to allocate for shared memory for a single RIP (in gigabytes). This value only concerns the RIP server defined at 127.0.0.1.If there is no RIP server defined at 127.0.0.1, this will reflect the required memory for the Service RIP.This value is equivalent to the SharedMemoryRasterLimitBytes field in the RIP server config. |
RipCount | Int32 | No | The number of RIPs used. This value only concerns the RIP server defined at 127.0.0.1.If there is no RIP server defined at 127.0.0.1, this will reflect the required memory for the Service RIP.This value is equivalent to the RipCount field in the RIP server config. |
SystemRamStatus | String | No | The state of the system's available RAM versus the RAM requirements of the RIP. Values: UnknownInsufficient - The available RAM cannot support the shared memory requirements and the print run will fail on startup.Sufficient - The available RAM can support the shared memory requirements but the RIP memory requirements may exceed the remaining available memory given a complicated enough job.Good - The available RAM can support the shared memory requirements and the RIP memory requirements. |
PageSubmitter
State relating to the optional PageSubmitter plugin.
Details
Automatically splits multi-page PDFs into smaller jobs for printing
This feature allows submission of specific page ranges from a single PDF file. Instead of printing an entire document at once, it can be split into separate print jobs.
For example, pages 1-5, pages 6-10, and so on. Each page range becomes its own job in the Waiting queue, making it easier to manage large documents or prioritize specific sections for printing.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
CurrentLoadedJob | String | No | Gets the name of the active source job. |
Methods
| Name | Returns | Description |
|---|---|---|
LoadJobFileChunk(String jobName, Byte[] chunkData, Int32 chunkSize) | Boolean | Load job file (in chunks). Callers must set chunkSize to the number of bytes to read from the chunkData array.A value of 0 must be sent to indicate the file transfer is complete.A value of -1 must be sent to indicate the transfer should be aborted. |
LoadJobFromPath(String jobName, String filePath) | Boolean | Loads a job file directly from a file system path that is accessible to both the OPC server and client. |
SubmitPages(String pageRange) | void | Extract one or more pages from the currently open job and submit them to the Waiting queue. |
PrintBarGroups
State relating to the active print bars.
Details
Note that each print bar 'group' corresponds to a collection of print bars which use the same settings (BPP, resolution, etc).
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
BitsPerPixel | Int32[] | No | The bits per pixel (BPP) of each print bar group. |
Colorants | String[] | No | The colorant list for each print bar group. |
Count | Int32 | No | The number of print bar groups. |
FlipHorizontally | Boolean[] | Yes | Whether a print bar group's output will be flipped horizontally. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
FlipVertically | Boolean[] | Yes | Whether a print bar group's output will be flipped vertically. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
GroupNames | String[] | No | The names of each print bar group. |
HorizontalResolution | Int32[] | No | The horizontal resolution (DPI) of each print bar group. |
HorizontalScaling | Double[] | Yes | The horizontal page scale (%) of each print bar group. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
MediaSides | String[] | No | Which media side each print bar group relates to (A/B). |
PlaneNumbers | String[] | No | The plane numbers for each colorant in each print bar group. |
Rotation | Int32[] | Yes | The rotation of each print bar group. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
VerticalResolution | Int32[] | No | The vertical resolution (DPI) of each print bar group. |
VerticalScaling | Double[] | Yes | The vertical page scale (%) of each print bar group. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
Methods
| Name | Returns | Description |
|---|---|---|
SetFailedNozzles(String inkName, Boolean isSideA, UInt64[] failedNozzles) | String | Set a collection of failed nozzle numbers (1+) for a given print bar. |
PrinterProfile
State relating to the active printer profile.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
EngineeringPIN | String | Yes | The PIN required to access the Engineer pane. The PIN must be comprised of four characters, each being a number, or it can be left empty. An empty PIN will mean a PIN is not required to access the Engineer pane. |
InkNames | String[] | No | A list of ink names defined in the printer profile. |
InksAsRGB | String[] | No | Complementing InkNames, a list of RGB color values than can be used to represent each ink. |
LineSpeedMetersPerMinute | Int32 | No | The printer line speed (m/min). |
Manufacturer | String | No | The printer manufacturer. |
MediaType | String | No | The type of media. Values: Web, Sheet |
Model | String | No | The printer model. |
Name | String | Yes | The name of the active printer profile. NOTE Modification requires external control. |
PrintBarHorizontalToImage | Boolean | No | Whether the print bars are horizontal to the printed page image. |
PrinterType | String | No | The type of printer. Values: Inkjet, Toner |
RotatePageClockwise | Boolean | Yes | Whether the page image should be rotated clockwise when the print bars are horizontal to the image. NOTE Modification requires external control. |
SupportChannelCloning | Boolean | Yes | Whether automatic channel cloning is supported. NOTE This setting does not persist - It must be explicitly set via OPC. NOTE Takes effect when new jobs are added. NOTE Modification requires external control. |
SupportColor | Boolean | No | Whether the printer supports color. |
SupportDirectQi | Boolean | No | Whether the printer supports a QI vision system. |
SupportDuplex | Boolean | No | Whether the printer supports duplex. |
SupportedMediaWidthsMm | String | No | A list of supported media widths (mm). |
SupportOfflineMode | Boolean | No | Whether the printer supports offline printing mode (RIP Ahead). |
Methods
| Name | Returns | Description |
|---|---|---|
GetPrinterProfileAsJson() | String | For internal use only. |
PrintRun
State relating to the print run.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AbortButtonState | String | No | The state of the print run Abort button. Values: Disabled, Enabled, Active |
IsActive | Boolean | No | Whether the print run is currently active. |
MaxPrintingJobs | Int32 | Yes | The maximum number of simultaneous jobs to submit for printing at any one time. NOTE Modification requires external control. |
StartButtonState | String | No | The state of the print run Start button. Values: Disabled, Enabled, Active |
Status | String | No | The status of the print run. Values: Stopped, Starting, Started, Stopping, Aborting |
StopButtonState | String | No | The state of the print run Stop button. Values: Disabled, Enabled, Active |
Methods
| Name | Returns | Description |
|---|---|---|
AbortPrintRun() | String | Abort an active print run (Immediate). (Requires external control) |
StartPrintRun() | String | Start an active print run. (Requires external control) Use IsActive to check when the operation completes. |
StopPrintRun() | String | Stop an active print run (As soon as possible). (Requires external control) Use IsActive to check when the operation completes. |
PrintRunConfig
State relating to the print configuration (Applies to both media sides).
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AddJobInformationPages | Boolean | Yes | Whether to automatically append an information page to each printed job. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
CueMarkIntervalMm | Double | No | The cue mark interval in mm. |
DuplexMode | String | No | The duplex mode. Values: Undefined, SimplexSideA, SimplexSideB, DuplexSideAFirst, DuplexSideBFirst |
EnableGPU | Boolean | Yes | Indicates whether Apex renderer is enabled. NOTE Changes must be 'applied' before they take effect. |
NozzleRefreshBarsEnabled | Boolean | Yes | Whether to add nozzle refresh bars onto the printed output. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
NozzleRefreshPageEndCount | UInt64 | Yes | How many nozzle refresh pages to append to the job. (0+)NOTE Requires nozzle refresh pages to be enabled. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
NozzleRefreshPageInterval | UInt64 | Yes | How many pages to process before inserting mid-document nozzle refresh pages. (1+)NOTE Requires nozzle refresh pages to be enabled. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
NozzleRefreshPageIntervalCount | UInt64 | Yes | How many nozzle refresh pages to add each time NozzleRefreshPageInterval pages have been processed. (0+)NOTE Requires nozzle refresh pages to be enabled. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
NozzleRefreshPagesEnabled | Boolean | Yes | Whether to add nozzle refresh pages into the printed output. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
NozzleRefreshPageStartCount | UInt64 | Yes | How many nozzle refresh pages to prepend to the job. (0+)NOTE Requires nozzle refresh pages to be enabled. NOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
RipMode | String | Yes | Whether jobs are ripped, screened if they have been ripped, or are ripped and screened at once. Values: RipDirect, RipAhead, ScreenDirectNOTE Changes must be 'applied' before they take effect. NOTE Modification requires external control. |
PrintRunConfig.ConfigSideA
The print configuration specific to media side 'A'.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
ActiveNozzles | Int32 | No | The number of active nozzles that the print bar has. NOTE Changes must be 'applied' before they take effect. |
CalibrationJustification | Int32 | Yes | The screen calibration justification (0, 1, 2).The values map as follows: 0 = Left, 1 = Center, 2 = Right. NOTE Changes are applied immediately if the print run is active, otherwise changes must be 'applied' before they take effect permanently. NOTE Modification requires external control. |
CalibrationOffset | Int32 | Yes | The screen calibration offset in nozzles. NOTE Changes are applied immediately if the print run is active, otherwise changes must be 'applied' before they take effect permanently. NOTE Modification requires external control. |
NozzleHash | String | No | A hash representation of the nozzle configuration. NOTE Changes must be 'applied' before they take effect. |
PrintPosition | String | No | The print position (GearLeft, Center, OperatorRight). |
PrintRunConfig.ConfigSideB
The print configuration specific to media side 'B'.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
ActiveNozzles | Int32 | No | The number of active nozzles that the print bar has. NOTE Changes must be 'applied' before they take effect. |
CalibrationJustification | Int32 | Yes | The screen calibration justification (0, 1, 2).The values map as follows: 0 = Left, 1 = Center, 2 = Right. NOTE Changes are applied immediately if the print run is active, otherwise changes must be 'applied' before they take effect permanently. NOTE Modification requires external control. |
CalibrationOffset | Int32 | Yes | The screen calibration offset in nozzles. NOTE Changes are applied immediately if the print run is active, otherwise changes must be 'applied' before they take effect permanently. NOTE Modification requires external control. |
NozzleHash | String | No | A hash representation of the nozzle configuration. NOTE Changes must be 'applied' before they take effect. |
PrintPosition | String | No | The print position (GearLeft, Center, OperatorRight). |
Servers
State relating to the collection of RIP Servers.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AvailableMeteorConfigs | String[] | No | The available Meteor config files. This field will be empty if there are no Meteor config files, or if no servers support Meteor output. |
AvailableServerConfigs | String[] | No | The available RIP Direct server config files. This field will be empty if there are no server config files. |
Colorants | String[] | No | Which colorants each server can process. |
ConnectionStatuses | String[] | No | Per-RIP Server connection statuses. Values: Disconnected, Connecting, Connected |
Count | Int32 | No | The number of RIP Servers. |
EnabledColorants | String[] | No | Which colorants each server will process. |
EnabledStatuses | Boolean[] | Yes | Whether each server is enabled or disabled. NOTE Modification requires external control. |
MediaSide | String[] | No | Which media side each server relates to (A/B). |
MeteorConfigs | String[] | No | The Meteor configuration for each server. If a server's ServerConfig does not support Meteor configurations, the value for that server will be 'N/A'. |
OverallConnectionStatus | String | No | Overall connection status of all enabled servers. Values: Disconnected, Connecting, Connected |
PrintRunStatuses | String[] | No | Per-RIP Server print run statuses. Values: Idle - No jobs are printing.Preparing - Print run is active and one or more jobs are preparing to print.Processing - Print run is active and one or more jobs are printing.Error - A job has failed to print. |
ServerConfigs | String[] | No | Per-RIP Server configurations. |
ServerPaths | String[] | No | Per-RIP Server paths. (E.g. \\127.0.0.1\SPCHD) |
Methods
| Name | Returns | Description |
|---|---|---|
GetPcInfo(Int32 serverIndex) | String | Read the static (CPU model, ...) and dynamic (CPU load, ...) properties for the specified server. |
RestartAll() | String | Restart all RIP Servers. (Requires external control) |
RunPluginCommand(Int32 serverIndex, String pluginName, String command) | String | Sends a plugin-dependent command to a named RIP Server plugin. (Requires external control) NOTE The print run must be started for the command to succeed. |
SelectLogFile(Int32 serverIndex) | String | Allows a RIP Server log file to be selected for reading. NOTE Must be called before any attempt to read data via ServerLogFile. |
SetMeteorConfig(Int32 serverIndex, String meteorConfigName) | String | Set the Meteor config file for a specified server. (Requires external control) The specified server must currently have a configuration that supports Meteor settings. |
SetServerConfig(Int32 serverIndex, String serverConfigName) | String | Set the RIP Direct server config for a specified server. (Requires external control) |
Files
| Name | Description |
|---|---|
ServerLogFile | Allows read-only access to the selected RIP Server log file. (See SelectLogFile) |
NOTE OPC File nodes contain functions which allow access to file content:
Open(int fileAccess)- Open the file with the specifiedfileAccess(1:read,2:write), returning an integer file handle.Read(int fileHandle, int length)- Read data from an open file handle, returning an array of bytes.Write(int fileHandle, byte[] buffer)- Write/append data to an open file handle.Close(int fileHandle)- Close the file handle after use.
For more information see the OPC documentation.
ServiceRip
State relating to the offline Service RIP.
Details
The Service RIP provides functionality, including offline processing of jobs by rendering PDF pages into a contone image format for external manipulation and then re-embedding those images back into the original PDF.
The RipToContone() method is used to render each page of a PDF into a series of colorant-based contone TIFF images, which can be modified externally.
The EmbedContone() method re-embeds the modified images into the original PDF. The TIFF images and an accompanying job XML file (from RipToContone()) must be located in the specified input folder.
It is also possible to generate a PDF containing screened separations, allowing close examination of the output that would otherwise be sent to a press. See RipToScreenedPdf() for details.
This system enables asynchronous job processing, meaning jobs are queued and results are available later for retrieval. Clients can monitor the completion of these jobs via AvailableResults and retrieve detailed result data using GetResultData().
If any RIP servers are currently using 127.0.0.1, the Service RIP will not be available.
Clients may call App.SetClientIsBusy() to let SPC know its offline services are being used.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AvailableResults | String[] | No | A collection of GUIDs representing the completed tasks previously scheduled with the Service RIP. This list is updated each time a new result is available, and indicates a call to GetResultData() can be performed. |
IsServiceRipConnected | Boolean | No | Whether the service RIP is currently connected. |
IsServiceRipConnectionFailed | Boolean | No | Whether the service RIP is required, but has failed to connect. |
Methods
| Name | Returns | Description |
|---|---|---|
CancelJob(String jobGuid) | String | This method will trigger cancellation of the job identified with the job GUID. |
EmbedContone(String jobGuid, String inputFolder) | String | This method schedules an SPC job for processing, given the SPC GUID of the job. (See AllJobs) The operation expects an input folder containing contone TIFF images and a job XML file (as created by RipToContone()).The images will be used to give the job 'RIP Ahead' status, reducing processing requirements when printing. The call is asynchronous - It will return immediately to indicate the task has been queued, and a result will be generated in due course. The final result (See AvailableResults, GetResultData()) is a single boolean value representing success. |
GetResultData(String jobGuid) | String | This method may be called each time the AvailableResults array is updated.The parameter is the GUID of the job to query, obtained from the AvailableResults array.The returned value is a JSON structure defining the result of the triggering action. After calling GetResultData() the entry will no-longer be available - Further calls will return an empty string. |
RipToContone(String jobGuid, String outputFolder) | String | This method schedules an SPC job for processing, given the SPC GUID of the job. (See AllJobs) Each PDF page will be rendered as a series of contone TIFF images (one per colorant) into the specified local output folder. The call is asynchronous - It will return immediately to indicate the task has been queued, and a result will be generated in due course. The final result (See AvailableResults, GetResultData()) is a JSON structure defining an array of output file names. |
RipToContonePdf(String jobGuid, String outputPdfFile) | String | This method schedules an SPC job for processing, given the SPC GUID of the job. (See AllJobs) A PDF page will be rendered as a series of contone separations (one per colorant) into the specified local output PDF file. The call is asynchronous - It will return immediately to indicate the task has been queued, and a result will be generated in due course. If the job has a target media override specified, it will be used when generating the output PDF. The final result (See AvailableResults, GetResultData()) is a single boolean value representing success. |
RipToScreenedPdf(String jobGuid, String outputPdfFile) | String | This method schedules an SPC job for processing, given the SPC GUID of the job. (See AllJobs) A PDF page will be rendered as a series of screened separations (one per colorant) into the specified local output PDF file. The call is asynchronous - It will return immediately to indicate the task has been queued, and a result will be generated in due course. If the job has a target media override specified, it will be used when generating the output PDF. The final result (See AvailableResults, GetResultData()) is a single boolean value representing success. |
SingleJob
Describes the collection of nodes representing a single job, positioned as a child of the WaitingQueue, PrintQueue, or CompletedQueue nodes.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
CopyCount | Int32 | Yes | Number of copies to print. Writable only for unlocked jobs in the Waiting queue. NOTE Modification requires external control. |
EndTime | String | No | When the job finished printing. (ISO 8601) |
Guid | String | No | Unique job descriptor. |
HasLiLoEnabled | Boolean | No | Whether or not the job can have lead in and/or lead out pages. |
HasNonEmbeddedFonts | Boolean | No | The result after running job font analysis. |
IsAutotuned | Boolean | No | Whether or not the job has been Autotuned. |
IsLocked | Boolean | Yes | Whether modifying operations (changes to copy count, job editor, ...) are allowed or not. Writable only for jobs in the Waiting queue. NOTE Modification requires external control. |
IsRipAhead | Boolean | No | Whether the job contains pre-RIPped pages. |
IsSelected | Boolean | Yes | Whether the user has selected the job in the UI. NOTE Modification requires external control. |
IsStreamlineOptimized | Boolean | No | Whether Streamline Optimize has processed the job. |
JobCostData | String | No | A JSON string representing the data collected during the job cost estimation process. |
JobId | String | No | The job ID received from the .complete file. |
JobLabel | String | Yes | Property which can be used to group related jobs. NOTE Modification requires external control. |
JobPartId | String | No | The job part ID received from the .complete file. |
JobTag | String | Yes | Property which can be used to attach arbitrary state to a job. The source of the state comes from an optional JobTag string field in the .complete JSON file written into the Waiting queue hot folder.The state lasts for the lifetime of the job, and will persist if a job is copied from the Completed queue to the Waiting queue. Writable only for jobs in the Waiting queue. NOTE Modification requires external control. |
LeadInCount | Int32 | Yes | Count of the lead in pages. NOTE Modification requires external control. |
LeadInThumbnail | String | No | BASE64-encoded representation of the lead in page thumbnail PNG data. |
LeadOutCount | Int32 | Yes | Count of the lead out pages. NOTE Modification requires external control. |
LeadOutThumbnail | String | No | BASE64-encoded representation of the lead out page thumbnail PNG data. |
Name | String | Yes | The job name (from the original job file name). Writable only for unlocked jobs in the Waiting queue that are not preprocessing. NOTE Modification requires external control. |
PageCount | Int64 | No | Page count of the document. |
PageHeightMm | Double | No | Page height (mm). |
PagesSucceeded | Int64 | No | The total number of pages submitted to the output device. NOTE This does NOT mean they were printed, only submitted to the output device. NOTE The value will not change after the print run is stopped. NOTE The value may not be accurate if the print run is aborted. |
PageWidthMm | Double | No | Page width (mm). |
PredictedLineSpeed | Double | No | The Streamline Direct predicted line speed (m/min). |
PredictedLineSpeedIndicator | String | No | The Streamline Direct predicted line speed (Status indicator). Values: Unavailable - Analysis unavailable.Red - Unable to achieve target speed.Amber - Should achieve target speed.Green - Will achieve target speed. |
PreprocessorStatus | String | No | Preprocessor status. Values: Pending, Active, Complete, Failed |
Printability | String | No | A comma-separated list of issues indicating if a job is printable, with the most serious being 'Error'. Values: UnknownPrintable - The job is printable.WarningProtrusion - The job has some printability issues, but can still be printedWarningProtrusionSideA - The job will protrude the media on Side A.WarningNonEmbeddedFonts - The job has some printability issues, but can potentially still be printed.WarningProtrusionSideB - The job will protrude the media on Side B.Error - The job cannot be printed.StreamlineIssues - Streamline issues detected.MediaMismatch - The job requires a media that is not currently active.DuplexModeMismatch - The job's duplex mode does not match the one chosen in the setup pane. |
Producer | String | No | Original producer of the PDF. |
QueuePosition | Int32 | No | The job position within the current queue (1+). |
RestartPage | Int32 | Yes | The page number at which to start printing the job. (Default: 1)Writable only for jobs in the Waiting queue. NOTE Modification requires external control. |
StartTime | String | No | When the job started printing (ISO 8601). |
Status | String | No | Up-to-date print status of the job.None - InactiveTransferring - Copying to server(s).TransferFailed - Copy failed.ReadyToPrint - File copied and ready to print.Printing - Currently printing.Succeeded - Job printed completed successfully.Failed - Job failed to print.Cancelled - User cancelled printing.PreRipped - Job pre-Ripped successfully. |
TargetMedia | String | Yes | The intended media to use when printing the job. NOTE Modification requires external control. |
Thumbnail | String | No | BASE64-encoded representation of the job thumbnail PNG data. |
TotalPageCount | Int64 | No | Page count of the printed document (PageCount * CopyCount + 'LeadInCount' + 'LeadOutCount'). |
StreamlineDirect
State relating to Streamline Direct technology.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AnalysisMaxPages | Int32 | Yes | The number of pages to sample when estimating print time. NOTE Takes effect when new jobs are added. NOTE Modification requires external control. |
BlockCriticalZoneJobs | Boolean | Yes | Whether jobs whose PredictedLineSpeedIndicator is Red - jobs that will not meet the Target Line Speed - can be sent to the Print Queue. NOTE This option can only take effect if EnableEstimation is enabled.NOTE Modification requires external control. |
EnableAutotune | Boolean | Yes | Whether to Autotune jobs that have been estimated. NOTE Takes effect when new jobs are added. NOTE Autotune can only occur if EnableEstimation is enabled.NOTE Modification requires external control. |
EnableEstimation | Boolean | Yes | Whether to estimate print time for jobs added to the Waiting Queue. NOTE Takes effect when new jobs are added. NOTE Modification requires external control. |
LineSpeed | Int32 | Yes | The press's target line speed (m/min). NOTE Modification requires external control. |
SafetyZone | Int32 | Yes | The percentage of extra line speed above the defined maximum line speed that can be allowed as an estimate. NOTE Takes effect when new jobs are added. NOTE Modification requires external control. |
WaitingQueueOptions
State relating to the behavior of the Waiting queue.
Properties
| Name | Type | Writable | Description |
|---|---|---|---|
AllowJobLocking | Boolean | Yes | Determines whether the SPC UI exposes the ability to lock/unlock jobs in the Waiting queue. NOTE When job locking is enabled and 'external control' is granted to an OPC client, the SPC UI will allow jobs in the Waiting queue to be modified. This must be considered by the OPC client when processing Waiting queue jobs. |
AllowThumbnails | Boolean | Yes | Determines whether thumbnails will be generated for jobs added to the Waiting queue. Disabling thumbnail generation may improve performance in situations where they are not required. Changes are immediate and apply to new jobs added to the queue. NOTE Modification requires external control. |
ApplyMediaFilter | Boolean | Yes | Determines whether the Waiting queue only displays jobs which target the active media (See ActiveMedia). NOTE Modification requires external control. |
HideLockedJobs | Boolean | Yes | Determines whether the Waiting queue displays locked jobs. NOTE Modification requires external control. |