Skip to main content
Skip table of contents

Mako 8.2.0 Release Notes

RELEASED OCTOBER 3RD, 2025

Introduction

This was a short release, coming just two months after Mako 8.1 that was released at the end of July. Nonetheless, it has new features and the usual round of fixes and improvements in response to support requests.

Mako 8.2.0 adds new features and other improvements to the Apex GPU-based renderer that we introduced in Mako 8.0. Apex now supports halftone screening that is implemented with the post-processing API we added in Mako 8.1. This means screening happens on the GPU, making it lightning fast. Plus, you can retrieve the screened result as packed bytes (e.g., 1 bit-per-pixel) and as the packing runs on the GPU, it’s very fast and the amount of image data to be retrieved is reduced. Apart from the performance benefit, moving operations to the GPU frees up the CPU for other tasks, improving throughput of the entire rendering process.

New Features

MAKO-5450 Apex: Add CSpotHalftone and CColorSpotHalftone support

This is a new Apex feature, adding halftoning capability to the Apex renderer that runs on the GPU. It is implemented as an Apex post process, CHalftonePostProcessSpec().

simpleapexrenderer in the makoapps folder of the SDK distribution will accept a halftone line frequency on the command line, so you can experiment without having to write code. The source is available so that you can see how to call the new APIs in your own project.

Full documentation with sample code will be added to Mako’s documentation shortly.

MAKO-5385 Support 1, 2, and 4 bit output in Apex

This is an exciting new feature of Apex, enabling rendered output to be retrieved as 1, 2 or 4 bits-per-pixel image data, without the need for CPU-intensive bit wrangling which is instead handled on the GPU. It paves the way for high-performance screening and other post-processing where the desired result is not a full 8- or 16-bit image.

simpleapexrenderer in the makoapps folder of the SDK distribution will accept one of these reduced bit depths (1, 2 or 4) on the command line, so you can experiment for yourself, and the source is available so that you can see how to call the new APIs.

Full documentation with sample code will be added to Mako’s documentation shortly.

MAKO-5438 MAKOSUP-11657 Add APIs to get/set GTS metadata entries in OCGs

Processing steps in PDF (ISO 19593-1; see the Ghent Workgroup site for further details) are metadata that explicitly identify the purpose of page objects, such as a path that describes a dieline. Such objects are attached to an optional content group (OCG). In response to a customer request, new APIs are added to the IOptionalContentGroup class:

  • IOptionalContentGroup::getGTSProcStepsGroup()

  • IOptionalContentGroup::getGTSProcStepsType()

  • IOptionalContentGroup::setGTSProcStepsGroup()

  • IOptionalContentGroup::setGTSProcStepsType()

Although it is possible to reach this information via the IPDFObject class, these APIs make it much easier to interrogate or change these settings.

Support requests

MAKO-5426 MAKOSUP-11428 Cache transparency groups for both PDF input and output

This change improves performance when retrieving content from a PDF into Mako DOM objects, for example with page->getContent(). For the customer case, processing all 2500 pages reduced from 11 minutes to 15 seconds, with a huge decrease in the amount of memory consumed and faster release thereof.

This improvement is supported by extensions to the hashing mechanism that Mako employs to identify repeated content and subsequently reuse elements already encountered. For PDF input, it avoids repeatedly parsing a complicated content stream over and over. For output it avoids repetition of elements already written to the PDF, making the file smaller and more efficient.

MAKO-5415 MAKOSUP-11494 Improvements to reduce memory usage and increase performance for customer PCL5 cases

This change adds a new API to IPCL5Input and IPRNInput to set the input PCL5 input flavour (5e or 5c) or detect it from PJL.

There are two main areas where performance is increased:

·       ROP flattening

·       Image compression

Additionally, there are bug fixes in this change that significantly improve output quality. In testing, conversion of PCL and PXL to PDF showed many improvements.

MAKO-5412 MAKOSUP-11585 Allow the Harlequin stroker to be used when rendering using Jaws

This change was implemented to solve a specific customer problem when rendering fine lines. It’s not enabled by default; to enable, set this environment variable:

MAKO_STROKER_HQN_DERIVED=1

MAKO-5396 MAKOSUP-11638 PCL5 input: Support pseudo emboldening/italicising

This adds support for pseudo emboldening/italicising of the Andale Mono WT fonts supplied as part of the Unicode Font Package for SAP when used with PCL5 input.

MAKO-5420 MAKOSUP-11652 PostScript job cropped after conversion to PDF

An unexpected PostScript operand caused Mako to interpret the resolution incorrectly. Now fixed.

MAKO-5460 MAKOSUP-11678 Rendering stamp annotations

The customer exhibit was a PDF with some odd characteristics that prevented Mako from rendering it as expected. Now fixed.

Improvements

MAKO-4105 Replace IAbortPtr with IProgressMonitorPtr for all classes with progress monitoring implemented

This change continues work to improve Mako’s progress reporting mechanism.

For some projects, this could result in a breaking change as it will be necessary to update references from IAbortPtr() to IProgressMonitorPtr()

This change affects custom transforms, which you may be using in your Mako project. For example, this code changes from this:

CPP
CMarkedContentRemoverImplementation mcRemoverImplementation(jawsMako);
ITransformPtr mcRemover = ICustomTransform::create(jawsMako, &mcRemoverImplementation, IAbortPtr(),
    false, false, false, false, false, false, false);

To this:

CPP
CMarkedContentRemoverImplementation mcRemoverImplementation(jawsMako);
ITransformPtr mcRemover = ICustomTransform::create(jawsMako, &mcRemoverImplementation, IProgressMonitorPtr(),
    false, false, false, false, false, false, false);

MAKO-5021 Apex: Support XPS semantics for image view boxes

This change, along with its siblings (MAKO-5022, MAKO-5024 & MAKO-5026) improve the performance and quality when rendering XPS with the Apex GPU-based renderer.

MAKO-5022 Apex: Support XPS brushes

This adds support for linear and radial gradients.

MAKO-5024 Apex: Support IDOMGlyphs style simulation

This refers to faux bold and faux italic, a mechanism whereby a glyph’s geometry is thickened (bold) or slanted (italic), thus avoiding the need for an additional font.

MAKO-5026 Apex: Support XPS-style opacity masks

An opacity mask is a black-to-white gradient that controls the transparency of an object.

MAKO-5391 Apex: File with a lot of images fails to render at low resolutions

This customer file contains over 27k tiny images, a few pixels wide and high. When rendering with Apex at low resolution, the way the images were uploaded overwhelmed GPU memory. The solution is to recognize this pattern, and to pack images together, thereby avoiding the problem. This also greatly improves rendering performance.

MAKO-5429 Apex: Render runs short of memory

The customer-provided PDF contained a large number of complex shadings that were not being cached efficiently, resulting in memory shortages during rendering. This issue has now been resolved, and the fix has proven beneficial for similar jobs, which now complete successfully with improved performance

JavaScript errors detected

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

If this problem persists, please contact our support.