Skip to main content
Skip table of contents

User Guide (SmartRIP)

Smart RIP v1.0.0.0, Copyright (c) 2025 Global Graphics Software. All rights reserved.

Overview

The Smart RIP allows system integrators to deliver print capabilities into an industrial sector via a simple OPC UA interface.

Key Features:

  • No User Interface - Headless, OPC UA only.

  • Single-Job Processing - Handles one job at a time, pages can be rendered on demand.

  • SMD-Based Configuration - Set up via Smart Media Manager files without needing changes to SMM.

  • OPC Server Support - Basic progress reporting, logging, and debugging.

  • Color Support - CMYK + spot colors like white/varnish.

When the product is launched its Open Platform Communications (OPC) server will publish an OPC node tree. The nodes in this tree represent grouped areas of state and functionality.

Default address: opc.tcp://localhost:26942/smartrip

MediaBridge

The Smart RIP application ships with an optional component called MediaBridge.

MediaBridge acts as a 'go between' between Smart Media Manager (our software for creating Smart Media (.smd) files) and the Smart RIP. When the MediaBridge is running, SMM will 'print' to the Smart RIP via the bridge.

When MediaBridge is running, it will show a taskbar icon next to the Windows clock area. This allows the user to easily exit the app, or view its application log.

ℹ️ NOTE: For MediaBridge to work correctly it must be run after the Smart RIP and before Smart Media Manager.

Once the user has created the media they require (for use with Smart RIP), the MediaBridge is not needed.

License Activation

The user has a chance to license the app at install-time. If they choose not to do this, then they'll need to use the /License command to activate it with a valid license key:

CODE
SmartRip.exe /License <your-license-key>

This activation only needs to be performed once after installation. Once activated, Smart RIP will remember the license for subsequent runs.

Getting Started

This section provides a step-by-step guide to get you started with Smart RIP using the OPC UA interface.

Basic Workflow

The typical workflow for using Smart RIP follows these main steps:

  1. Install Media - Configure printer settings for the physical media

  2. Prepare Job - Load the print job and configure properties

  3. Start Print Run - Initialize the RIP for printing

  4. Print - Submit the job for processing

  5. Stop Print Run - Clean shutdown when printing is complete

Step-by-Step Guide

1. Install Media

Before printing, at least one media configuration (.smd file) must be installed that defines printer settings, color adjustments, and other parameters for the physical media.

Use the Media node to install media files either from a shared file path or by uploading in chunks. Installing a media returns the media name that will be used in subsequent operations.

Installed media configurations remain available between application restarts.

2. Prepare The Job

Configure the job settings and upload the print file using the Prepare node:

  • Set the OutputType property to specify which output format to use for printing (e.g., Tiff for image files you can easily examine)

  • Set the OutputPath property to specify where output files should be written (required for Tiff and other file-based output)

  • Set the MediaName property to specify which installed media to use

  • Set the CopyCount property to specify the number of collated copies (defaults to 1)

  • Load the job file using either LoadJobFromPath() for shared files or LoadJobFileChunk() for client-only files

State Changes: During job preparation, the Print node properties remain:

  • JobState: NotStarted

  • PrintRunState: Stopped

  • PagesProcessed: 0

  • PagesTotal: 0

3. Start the Print Run

Initialize the RIP with the job configuration by calling PrintRunStart() on the Print node.

ℹ️ NOTE: Both a job file and media must be specified before making this call.

ℹ️ NOTE: This call returns immediately and the initialization occurs asynchronously. Monitor the PrintRunState property to confirm the print run has started successfully.

State Changes: The PrintRunState transitions as follows:

Stage

PrintRunState

Description

Initial

Stopped

Ready to start

Starting

Starting

Print run initialization in progress

Complete

Started

Print run ready for jobs

4. Start Printing

Submit the job for processing by calling StartPrinting() on the Print node.

This call returns immediately. Monitor progress using the Print node properties:

  • JobState - Current job status (NotStarted, Printing, Success, ...)

  • PagesProcessed - Number of pages completed

  • PagesTotal - Total pages in the job

  • PrintRunState - The state of the print run (Stopped, Starting, Started, ...)

State Changes: During printing, properties change as follows:

Property

Initial Value

During Print

On Success

JobState

NotStarted

Printing

Success

PrintRunState

Started

Started

Started

PagesProcessed

0

Increments as pages complete

Equals PagesTotal

PagesTotal

0

Set to total job pages

Final page count

ℹ️ NOTE: JobState can also transition to Failed or Cancelled if errors occur or the job is aborted.

If the output type results in files written to disk, they will be at the location specified by the Prepare.OutputPath property.

5. Stop the Print Run

When printing is complete, call PrintRunStop() on the Print node to properly shut down the print run.

ℹ️ NOTE: This call returns immediately. Monitor the PrintRunState property to confirm the print run has stopped.

State Changes: The PrintRunState transitions as follows:

Stage

PrintRunState

Description

Active

Started

Print run is active

Stopping

Stopping

Print run shutdown in progress

Complete

Stopped

Print run has ended

Error Handling

All OPC method calls may throw exceptions if errors occur. Check the application log file (accessible via App node's LogFile) for detailed error information.

Custom log messages can be written using the LogInfo(), LogWarning(), and LogError() methods on the App node.

Prerequisites

  • Smart RIP must be running and accessible at the default OPC address: opc.tcp://localhost:26942/smartrip

  • The OPC client must have appropriate certificates configured for secure communication

  • At least one media file (.smd) must be available for installation

Running from the Command Line

Smart RIP can be run directly from the command line or via a shortcut. By default, running the application will display a console window showing status and log messages. This is useful for development and troubleshooting.

In production environments, you may wish to run Smart RIP without showing the console window. There are two common approaches on Windows:

  1. Using a Windows Shortcut (Minimized Window): Create a shortcut to the executable. In the shortcut properties, set the 'Run' option to 'Minimized'. This will launch the application with the console window minimized, keeping it out of the way but still accessible if needed.

  1. Running Programmatically (Hidden Window): If launching from another application or script, you can use the Windows process API to start the process with the window hidden. For example, in C#:

CODE
var process = new System.Diagnostics.Process
{
    StartInfo = new System.Diagnostics.ProcessStartInfo
    {
        FileName = "SmartRip.exe",
        WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
        CreateNoWindow = true
    }
};
process.Start();

This will start Smart RIP without displaying the console window at all.

ℹ️ NOTE: The application log file will continue to record all messages regardless of window visibility. For troubleshooting, refer to the log file as described in the documentation.

Command Line Options

Run Smart RIP with the /? switch to display usage information and available command line options:

CODE
Smart RIP v1.0.0.0
Copyright © 2025 Global Graphics Software. All rights reserved.

Usage: SmartRip [/License <key>] [/?]
  /License        Activate with the specified license key
  /FactoryReset   Reset application settings back to the default state
  /?              Display this help

Plugin Configuration

Plugins can be configured using an optional JSON configuration placed alongside the plugin DLL file. These settings will be exposed over the OPC interface, and should be set as required prior to printing. Only Boolean values are supported at this time. The UiDisplay value is used to populate the OPC node's Description property.

Example plugin configuration file (Tiff.json alongside Tiff_Output_Plugin.dll):

CODE
{
    "Compression": {
        "Type": "Boolean",
        "DefaultValue": "False",
        "UiDisplay": [ "Compression" ]
    },

    "AddColorMapping": {
        "Type": "Boolean",
        "DefaultValue": "False",
        "UiDisplay": [ "Add Color Map" ]
    }
}

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 can be found in %programdata%\Global Graphics Software Ltd\Smart RIP\App Certificates\certs if it needs to be copied to the Trusted Peer Certificate folder.

Quick Start Example

This section provides a simple example to help first-time users connect to the Smart RIP OPC UA server and retrieve basic information. The example is written in Python, though many programming languages offer OPC UA client libraries with similar functionality.

Python Example

The following Python script demonstrates how to connect to Smart RIP and read the application version number:

CODE
# Install with: pip install opcua cryptography

from opcua import Client

# Address published by Smart RIP
SMARTRIP_URL = "opc.tcp://localhost:26942/smartrip"

# Connect to the SmartRIP OPC UA server
client = Client(SMARTRIP_URL)
client.connect()

try:
    # Navigate to the VersionNumber node
    node = client.get_node("ns=2;s=App/VersionNumber")

    # Read and display its value
    version = node.get_value()
    print(f"Smart RIP version: {version}")

finally:
    client.disconnect()

Expected Output:

CODE
Smart RIP version: Smart RIP v1.0.0.0

This example illustrates the basic pattern for OPC UA communication:

  1. Connect to the server using the published endpoint address

  2. Navigate to specific nodes using their NodeId (the ns=2;s=App/VersionNumber identifier)

  3. Read or write values as needed

  4. Disconnect properly to clean up resources

Language Support

OPC UA client libraries are available for many programming languages including C#, Java, C++, JavaScript/Node.js, and others. The concepts and workflow remain consistent across implementations, though syntax and specific API calls will vary by language and library.

Support

Application log files are stored in user-specific directories and are useful for debugging and error reporting:

Smart RIP Logs: C:\Users\[username]\AppData\Local\Global Graphics Software Ltd\SmartRip\...

MediaBridge Logs: C:\Users\[username]\AppData\Local\Global Graphics Software Ltd\MediaBridge\...

Replace [username] with the actual Windows username. These log files contain detailed information about application behavior, errors, and can be invaluable for troubleshooting issues.

Troubleshooting

This section covers common issues and solutions when working with Smart RIP via OPC UA.

  • Client can't connect
    Check Smart RIP is running and port 26942 is open.

  • "BadCertificate" error
    Copy the Smart RIP certificate from %ProgramData%\Global Graphics Software Ltd\Smart RIP\App Certificates\certs into your OPC client's trusted folder.

  • Job fails to print
    Check the App.LogFile contents via the OPC node or local log folder.

  • "BadNodeIdUnknown" error
    Verify the NodeId string is correct (e.g., ns=2;s=App/VersionNumber). Node names are case-sensitive.

  • Methods throw exceptions
    Ensure prerequisite steps are completed (e.g., media installed before starting print run, job loaded before printing).

  • Media installation fails
    Check the .smd file path is accessible and the file is not corrupted. Verify sufficient disk space.

  • Print run won't start
    Ensure both a job file and media are specified via the Prepare node before calling PrintRunStart().

  • Output files not created
    Verify the OutputPath property is set correctly and the directory exists with write permissions.

  • PrintRunState stuck in 'Starting'
    Check the application log for initialization errors. Verify the selected media is compatible with the job.

  • Connection timeouts
    Increase client timeout settings. Check network connectivity and firewall rules for port 26942.

  • License errors
    Run SmartRip.exe /License <your-key> to activate, or contact support if the key appears invalid.

For detailed diagnostic information, always check the Smart RIP application log accessible via the App.LogFile node or the local log directory.

OPC Methods

Any methods listed in this documentation will include details about their required parameters (if any), and return value.

In the event of an error please see the application 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 RIP.

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:

CODE
	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:

CODE
	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.

SmartRIPSet

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

App

State relating to the entire application.

Media

State relating to the application media library.

PluginOptions

Collection of plugin-specific configurable options.

Prepare

State relating to the job to print.

Print

State relating to the process of printing.

App

State relating to the entire application.

Details

The App node is the entry point for OPC clients and exposes basic application-wide functionality.

This node exposes methods and data for:

  • Retrieving version information.

  • Reading the application log file.

  • Writing messages to the application log.

  • Requesting application shutdown.

Properties

Name

Type

Writable

Description

VersionNumber

String

No

Gets the application version number.

Methods

Name

Returns

Description

Exit()

void

Request the application to shut itself down.

ℹ️ NOTE: Use with care.

LogError(String clientId, String message)

void

Allows an OPC client to write an error message into the application log.

clientId should be any string which uniquely identifies the client.

LogInfo(String clientId, String message)

void

Allows an OPC client to write an information message into the application log.

clientId should be any string which uniquely identifies the client.

LogWarning(String clientId, String message)

void

Allows an OPC client to write a warning message into the application log.

clientId should be any string which uniquely identifies the client.

Files

Name

Description

LogFile

Allows read-only access to the application log file.

NOTE OPC File nodes contain functions which allow access to file content:

  • Open(int fileAccess) - Open the file with the specified fileAccess (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.

Media

State relating to the application media library.

Details

The media sub-tree provides mechanisms to manage a library of 'media' configurations.
A media defines the printer settings, color adjustments, etc. required to correctly print on a particular physical media type.

Media are stored in .smd files on disk.

The media library supports installation from both server-accessible media files (InstallMediaFromPath()) and client-only media files (InstallMediaFileChunk()).
In both cases a copy of the media file is taken.

Installing a media with the same name as an existing media file will result in the latter being replaced.

Properties

Name

Type

Writable

Description

MediaNames

String[]

No

Gets the list of installed media names.

Methods

Name

Returns

Description

InstallMediaFileChunk(Byte[] chunkData, Int32 chunkSize)

String

Install a .smd media file (in chunks) into the media library.

Allows a .smd media file of any size to be uploaded over the OPC, one 'chunk' at a time.
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 must be sent to indicate the file transfer is complete.
A value of -1 must be sent to indicate the transfer should be aborted.

Returns the name of the media (Once upload of all chunks is complete).

If a media with the same name already exists, it will be overwritten.

InstallMediaFromPath(String smdPath)

String

Install a .smd media file directly from a file system path that is accessible to both the OPC server and client.

This method is suitable when:

  • Both server and client are on the same machine.

  • The file path points to a shared network location accessible by both.

  • The server has direct file system access to the specified path.

The file need not exist for the duration of the print workflow - A copy will be made.

Returns the name of the media.

Use InstallMediaFileChunk() method instead if the file is only accessible to the client.

UninstallMedia(String mediaName)

Boolean

Uninstall a media entry from the media library.

Removes the specified media from the library.
The media name must match exactly one of the names listed in the MediaNames property.

The media file will be permanently deleted from the system.

PluginOptions

Collection of plugin-specific configurable options.

Details

Each plugin can have its own JSON configuration file defining custom values that will be exposed as dynamic OPC properties.

Prepare

State relating to the job to print.

Details

The Prepare node is used by clients to configure the printer with data and settings for a job.

This node exposes properties and methods for:

  • Uploading job file data either in chunks or from a file system path.

  • Setting copy count and other job ticket properties.

Clients must complete the job configuration before initiating printing.

ℹ️ NOTE: All requests to modify the configuration are locked once a print run becomes active.

Properties

Name

Type

Writable

Description

AvailableOutputTypes

String[]

No

Gets the list of available output options.

CopyCount

Int32

Yes

Gets or sets the number of collated job copies.

Default value: 1

EnableScreening

Boolean

Yes

Gets or sets whether screening is enabled.

When disabled, the rendered output is not screened.

MediaName

String

Yes

Gets or sets the named media to use when printing.

Media name must match one of the entries in the OPC Media node.

OutputPath

String

Yes

Gets or sets the output folder path for output types that write to disk.

Specifies the folder path where output files will be written for output types that write to disk (e.g. Tiff).

The caller should ensure the path is in a valid writable location.

OutputType

String

Yes

Gets or sets the output type to use when printing.

Output type must match one of the entries in AvailableOutputTypes.

PageRange

String

Yes

Gets or sets the page range to print.

Specifies which pages to print in standard page range format.

Supported formats:

  • Empty string, "all", or "1-" - prints all pages

  • Single page: "3" - prints page 3 only

  • Page range: "1-5" - prints pages 1 through 5

  • Open-ended range: "3-" - prints page 3 to end of document

  • Multiple ranges: "1-3,5,7-9" - prints pages 1-3, 5, and 7-9

  • Special keywords:

  • "odd" - prints only odd-numbered pages

  • "even" - prints only even-numbered pages

Methods

Name

Returns

Description

LoadJobFileChunk(String jobName, Byte[] chunkData, Int32 chunkSize)

Boolean

Load job file (in chunks) for printing.

Allows a job file of any size to be uploaded over the OPC, one 'chunk' at a time.
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 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.

This method is suitable when:

  • Both server and client are on the same machine.

  • The file path points to a shared network location accessible by both.

  • The server has direct file system access to the specified path.

The file need not exist for the duration of the print workflow - A copy will be made.

Use LoadJobFileChunk() method instead if the file is only accessible to the client.

Print

State relating to the process of printing.

Details

The Print node is used by clients to perform and monitor a print job.

This node exposes properties and methods for:

  • Starting and stopping print runs.

  • Submitting jobs for printing.

  • Monitoring job progress.

All job configuration must be completed through the Prepare node before initiating printing.

Properties

Name

Type

Writable

Description

JobState

String

No

Gets the current state of the print job.

Values:
NotStarted - Job not yet started to process.
Printing - Job is being processed.
Success - Job has succeeded processing.
Failed - Job failed to process due to an error.
Cancelled - Job was cancelled by user request.

PagesProcessed

Int32

No

Gets the number of pages that have been processed.

This value resets to zero when a new job starts printing.
Includes all pages across all job copies.

PagesTotal

Int32

No

Gets the total number of pages in the print job.

This value resets to zero when a new job starts printing.
Includes all pages across all job copies.

PrintRunState

String

No

Gets the current state of the print run.

Values: Stopped, Starting, Started, Stopping, Aborting

Methods

Name

Returns

Description

PrintRunAbort()

Boolean

Aborts the print run asynchronously.

This call returns immediately and the print run abort operation occurs asynchronously. See PrintRunState.

PrintRunStart()

Boolean

Starts the print run asynchronously.

Starting a print run is required to allow StartPrinting().

A job file and media must be specified prior to making this call.

This call returns immediately and the print run initialization occurs asynchronously. See PrintRunState.

PrintRunStop()

Boolean

Stops the print run asynchronously.

This call returns immediately and the print run stops asynchronously. See PrintRunState.

StartPrinting()

Boolean

Configures the RIP, starts the print run, and submits the 'prepared' job for printing.

This call will return as soon as the job is submitted for printing.

A job file and media must be specified prior to making this call.

The print run must be started prior to making this call.

Glossary

Term

Description

Smart RIP

The core RIP (Raster Image Processor) application. It converts PDF files into raster data suitable for industrial printing.

OPC UA

Open Platform Communications – Unified Architecture. A standard machine-to-machine communication protocol for industrial automation. Used by Smart RIP for remote control and monitoring.

OPC Node

A data or function entry in the OPC UA server's address space. Each node may represent a property, method, or structured data element.

SmartRIPSet

The root OPC node published by Smart RIP, containing all sub-nodes (App, Media, Prepare, Print, ...).

SMD File

Smart Media Definition file. Created using Smart Media Manager (SMM) to define media-specific print settings such as color, dot gain, and density curves.

Smart Media Manager (SMM)

A companion application used to create and manage .smd files. These files are later installed into Smart RIP via the OPC interface.

MediaBridge

A lightweight application that connects Smart Media Manager to Smart RIP, allowing SMM to "print" media definitions directly into Smart RIP.

Print Run

A live printing session within Smart RIP. Once started, jobs can be rasterized and monitored until completion.

Output Plugin

A dynamically loaded module responsible for producing the desired output format (e.g., TIFF or device-specific).

Plugin Configuration File

A .json file placed beside a plugin DLL that defines which configuration options (booleans, etc.) should appear as writable OPC properties.

Page Range

A standard page range string that defines which pages to print (e.g., 1-3,5, odd, even).

Chunk Upload

Method of transferring large files (e.g., SMD or job files) to Smart RIP over OPC in multiple binary segments due to OPC message size limits.

PrintRunState

Property that reports the current print run phase: Stopped, Starting, Started, Stopping, or Aborting.

JobState

Property that reports the current job phase: NotStarted, Printing, Success, Failed, or Cancelled.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.