From print to manufacturing – an introduction to industry terms in the smart factory for the printer operator

As print evolves to become more integrated with manufacturing and a key part of the smart factory, those of us in the printing world are discovering new industry terms and language. In this blog post, Ian Bolton, product manager at Global Graphics Software, defines some of those industry terms and includes examples of how they are implemented into Global Graphics Software’s solutions.

OPC stands for Open Platform Communications – UA stands for Unified Architecture. Together: OPC UA. It’s an open standard for exchanging information between industrial components (composers). First developed in 1994 as OPC, sometimes referred to as OPC Classic, the standard was redesigned in 2006 as OPC UA. It is used to communicate with the factory across the internet. It has full encryption and security standards built in.

OPC UA is supported by over 800 members in the OPC Foundation and has been deployed in over 50 million devices. It is supported by companies like Mitsubishi, Siemens, Rockwell Automation, Microsoft, Amazon, SAP and Cisco.

OPC UA Server and OPC UA Client
Two more industry terms are OPC UA Server and OPC UA Client. The OPC UA Client communicates data through the OPC UA Server. The Client communicates in both directions with the printer PLCs, both reading and writing, and it can display device-specific information, like the ink levels and inkjet head temperatures

The image below shows Global Graphics Software’s Smart Print Controller™ (SPC). The SPC is an operator user interface that connects to one or more of our Harlequin Direct™ RIPs. The SPC contains both an OPC UA Client and an OPC UA Server.

The OPC UA Server within the SPC allows the printer to appear as a single device to the Smart Factory OPC Clients. It can publish data to the smart factory and the outside world including industrial cloud services, like AWS IoT SiteWise and Microsoft’s Azure IoT platform (more about those in the next paragraph).

Industrial Cloud Services
Industrial cloud services, like AWS IoT SiteWise and Azure IoT, offer a range of industry-specific cloud solutions, including sharing and storing data. By sharing and storing data in the Cloud, you can leverage opportunities to use machine learning and artificial intelligence to analyze the data. This allows you to do predictive maintenance and optimize your industrial components based on the data in the analysis. No programming is required to make this connection because the work is done via a web browser, although some firewall and networking adjustments may need to be made.

You can visualize data collected in this way in graphs and charts via a web browser, like in this image below:

Another industry term is SCADA, which stands for Supervisory Control and Data Acquisition. With SCADA, you can supervise, monitor and control industrial processes both locally and remotely. The dashboards created in the SCADA system can be viewed from a browser on any device.

Here we show an Ignition SCADA solution connected to our OPC UA servers, but there are many other vendors.

Smart Factory
The smart factory autonomously runs the entire production process. Smart factories self-optimize, self-adapt and learn from new conditions in real-time allowing them to keep running. Print will become a subsystem of the smart factory and print operators will move from overseeing a single component to having the capability to oversee the whole factory.

Adding print to smart factories requires a rethink in the software and hardware stack. The Digital Front End (DFE) will also need to become smart:

The SmartDFE™ from Global Graphics Software is a full software and hardware stack that does everything from job creation through to printhead electronics. It includes the OPC UA-enabled SPC. The diagram below shows the SPC on the left, which controls a number of distributed Harlequin Direct RIPs. There is a very fast, single-pass system with one Harlequin Direct PC per print bar. The SPC distributes the PDF out to the Harlequin Directs and they then RIP, screen and stream the data to the printhead driver electronics in real-time. The Harlequin Direct PC at the bottom is streaming the same print data to a Quality Inspection Vision System.

To keep up with the fastest presses, our Harlequin Direct PCs must be running at the optimum level for every job. We can use an OPC UA Server to monitor each of the Harlequin Direct PCs. Shown on the right of each print bar is the Ink Delivery System for each ink color. Its job is to pump the ink around to the inkjet heads and keep it at the ideal temperature.

The above industry terms are just a few to get you started. Let me know if there are any others you’d like me to cover in future posts.

Find out more:

1. Connecting print to a smart factory.

2. Project manager Jason Hook shows how we’ve implemented OPC UA into our solutions in this film: How to transform your inkjet business with Industry 4.0 and OPC UA. Jason demonstrates how we track performance metrics like pressure levels across an entire production line using our PC and Ink Delivery System, all while uploading it securely onto cloud servers using AWS IoT SiteWise and Azure IoT.

3. Short introduction to the OPC UA

About the author

Ian Bolton

Ian Bolton, Product Manager, Direct
Ian Bolton, Product Manager – SmartDFE and Direct

Ian Bolton is the product manager for SmartDFE™ and Direct™. He works with printer OEMs to break down barriers that might be preventing them from reaching their digital printer’s full potential. A software engineer at heart, Ian has a masters in Advanced Computer Science from the University of Manchester, and over 15 years’ experience developing software for both start-ups and large corporations, such as Arm and Sony Ericsson. He draws on this technical background and his passion for problem-solving to define and drive features and requirements for innovative software solutions for digital print.

Be the first to receive our blog posts, news updates and product news. Why not subscribe to our monthly newsletter? Subscribe here

Follow us on LinkedInTwitter and YouTube

Using the Mako Core SDK to modify documents in Microsoft’s Universal Print

Over the past year, Microsoft has been working hard to bring its new Cloud printing service, Universal Print, to general availability.

As a part of Universal Print, developers get access to a set of Graph APIs that allows analysis and modification of print job payload data. This feature enables a few different scenarios, including adding security (e.g. redactions or watermarks) to a Universal Print-based workflow.

As a curious engineer, I wanted to see how different it would be for an independent software vendor (ISV) to use our Mako™ Core SDK to modify a print job flowing through Universal Print, instead of using a more traditional route of using a virtual printer driver.

Thinking about the workflow a little more, I came up with the following design:

Using the Mako SDK to modify documents in Universal Print.
Using the Mako SDK to modify documents in Universal Print.

In the design above, we can see the end-user’s Word document gets printed to a virtual printer. This allows the ISV to be notified of the job, and modify it accordingly using Mako. Once modified, the ISV then redirects the job on to the physical printer for printing.

There’s a couple of nice things about this design:

Firstly, it uses the Graph API to access Universal Print, which is an easy-to-use and well documented REST API. Secondly, since the functionality is accessed via a REST API, it allows our ISV service to be written in whichever Mako supported language we like.

I chose C# to make best use of the C# Graph API SDK.

Developing the service

There are five main steps to developing the service:

  1. Handle print job notifications
  2. Download the print job payload
  3. Modify the payload
  4. Upload the payload
  5. Redirect to the target printer

Handle print job notifications

To be notified of print jobs in Universal print, you can use the Graph’s change notifications. These will allow you to sign up to a notification, which will call a provided webhook.

Download the print job payload

Once we have notification that a print job has been sent to our virtual printer, we can start downloading its payload.

Here we use the appropriate Graph APIs, along with standard Graph authentication to access the print job’s document. We then simply save it to disk.

Modify the payload

Once we have the document on disk (although Mako can also modify streams too!), we can open the document and modify it using Mako’s document object model (DOM).

Alternatively, Mako can also convert from one page description language (PDL) to another. This is useful in situations where your destination printer doesn’t support the input PDL.

Upload the payload

Uploading the modified document is straightforward. This time we use the Graph API to create an upload session, and use the WebClient class to put the document back into the original print job.

Redirect to the target printer

And finally, after the print job has been updated, we can redirect it onto another printer. This redirection also automatically completes the print job and task.

Alternatively, if we want to be a little more green, we could always send the document to OneDrive, Sharepoint, or another document management system. After doing so, you then complete the print job and its associated task.

See it in action

We actually coded this demo live in our last Mako webinar, showing an implementation where an ISV wants to automatically redact content.

Access the code directly at our GitHub repository or watch the webinar recording below:

Try it out

We’re keen to talk to you about your Universal Print project and see how we can help. Contact us here.

For more information about Mako, visit

About the author

Andy Cardy, Principal Engineer at Global Graphics Software
Andy Cardy, Principal Engineer at Global Graphics Software

Further reading:

  1. Carry out complex tasks for your print workflow easily with Mako
  2. Improving PDF accessibility with Structure Tagging

Be the first to receive our news updates and product news. Why not subscribe to our monthly newsletter? Subscribe here

Follow us on LinkedIn and Twitter

Improving PDF accessibility with Structure Tagging

In this week’s post, Global Graphics Software’s principal engineer, Andrew Cardy, explores the structure tagging API in the Mako™ Core SDK. This feature is particularly valuable as it allows developers to create PDFs that can be read by screen readers, such as Jaws®. This helps blind or partially sighted users unlock the content of a PDF.  Here, Andy explains how to use the structure tagging API in Mako to tag both text and images:

What can we Structure Tag?

Before I begin, let’s talk about PDF: PDF is a fixed-format document. This means you can create it once, and it should (aside from font embedding or rendering issues) look identical across machines. This is obviously a great thing for ensuring your document looks great on your user’s devices, but the downside is that some PDF generators can create fixed content that is ordered in a way that is hard for screen readers to understand.

Luckily Mako also has an API for page layout analysis. This API will analyze the structure of the PDF, and using various heuristics and techniques, will group the text on the page together in horizontal runs and vertical columns. It’ll then assign a page reading order.

The structure tagging API makes it easy to take the layout analysis of the page and use it to tag and structure the text. So, while we’re tagging the images, we’ll tag the text too!

Mako’s Structure Tagging API

Mako’s structure tagging API is simple to use. Our architect has done a great job of taking the complicated PDF specification and distilling it down to a number of useful APIs.

Let’s take a look at how we use them to structure a document from start to finish:

Setting the Structure Root

Setting the root structure is straight forward. Firstly, we create an instance of IStructure and set it in the document.

Next we create an instance of a Document level IStructureElement and add that to the structure element we’ve just created.

One thing that I learnt the hard way, is that Acrobat will not allow child structures to be read by a screen reader if their parent has alternative (alt) text set.

Add alternate text only to tags that don’t have child tags. Adding alternate text to a parent tag prevents a screen reader from reading any of that tag’s child tags. (Adobe Acrobat help)

Originally, when I started this research project, I had alt text set at the document level, which caused all sorts of confusion when my text and image alt text wasn’t read!

Using the Layout Analysis API

Now that we’ve structured the document, it’s time to structure the text. Firstly, we want to understand the layout of the page. To do this, we use IPageLayout. We give it a reference to the page we want to analyze, then perform the analysis on it.

Now the page has been analyzed, it’s easy to iterate through the columns and nodes in the page layout data.

Tagging the text

Once we’ve found our text runs, we can tag our text with a span IStructureElement. We append this new structure element to the parent paragraph created while we were iterating over the columns.

We also tag the original source Mako DOM node against the new span element.

Tagging the images

Once the text is structured, we can structure the images too.

Earlier, I used Microsoft’s Vision API to take the images in the document and give us a textual description of them. We can now take this textual description and add it to a figure IStructureElement.

Again, we make sure we tag the new figure structure element against the original source Mako DOM image.

Notifying Readers of the Structure Tags

The last thing we need to do is set some metadata in the document’s assembly, this is straight forward enough. Setting this metadata helps viewers to identify that this document is structure tagged.

Putting it all Together

So, after we’ve automated all of that, we now get a nice structure, which, on the whole, flows well and reads well.

We can see this structure in Acrobat DC:

And if we take a look at one of the images, we can see our figure structure now has some alternative text, generated by Microsoft’s Vision API. The alt text will be read by screen readers.

Figure properties dialogue
Figure properties dialogue

It’s not perfect, but then taking a look at how Adobe handles text selection quite nicely illustrates just how hard it is to get it right. In the image below, I’ve attempted to select the whole of the title text in Acrobat.

Layout analysis is hard to get right!

In comparison, our page layout analysis seems to have gotten these particular text runs spot on. But how does it fair with the Jaws screen reader? Let’s see it in action!

Struture tagging with Mako SDK

So, it does a pretty good job. The images have captions automatically generated, there is a sense of flow and most of the content reads in the correct order. Not bad.

Printing accessible PDFs

You may be aware that the Mako SDK comes with a sample virtual printer driver that can print to PDF. I want to take this one step further and add our accessibility structure tagging tool to the printer driver. This way, we could print from any application, and the output will be accessible PDF!

In the video below I’ve found an interesting blog post that I want to save and read offline. If I were partially sighted, it may be somewhat problematic as the PDF printer in Windows 10 doesn’t provide structure tagging, meaning that the PDF I create may not work so well with my combination of PDF reader and screen reader. However, if I throw in my Mako-based structure and image tagger, we’ll see if it can help!

Structure tagging video

Of course, your mileage will vary and the quality of the tagging will depend on the quality and complexity of the source document. The thing is, structural analysis is a hard problem, made harder sometimes by poorly behaving generators, but that’s another topic in itself. Until all PDF files are created perfectly, we’ll do the best we can!

Want to give it a go?

Please do get in touch if you’re interested in having a play with the technology, or just want to chat about it.

Andy Cardy, Principal Engineer at Global Graphics Software
Andy Cardy, Principal Engineer at Global Graphics Software

Andy Cardy is a Principal Engineer for Global Graphics Software and a Developer Advocate for the Mako SDK.

Find out more about Mako’s features in Andy’s coding demo:


Sharpen the Saw: Mako SDK demo

In this session Andy uses coding in C++ and C# to show you three complex tasks that you can easily achieve with Mako:
• PDF rendering – visualizing PDF for screen and print (15 mins)
• Using Mako in Cloud-ready frameworks (15 mins)
• Analyzing and editing with the Mako Document Object Model (15 mins)

To be the first to receive our blog posts, news updates and product news why not subscribe to our monthly newsletter? Subscribe here


Follow us on LinkedInTwitter, and YouTube