Skip to main content
Skip table of contents

Mako 6.2.3 Release Notes


This is an interim release that delivers improvements to the IJPDS input class that were required for a specific customer. As usual, these release notes are presented in terms of the development tasks (MAKO-XXXX) that had to be undertaken to complete this release. Only items of significance – those that add new features / improvements in this release or address identifiable support issues (labelled MAKOSUP-XXXXX) – are included.

New features


Characters missing from mako_mark_knockout.ijp output

A character was being omitted from the output due to an optimization of ROP (raster operations) code. Now fixed.


Stitched IJPDS output should not have a fixed page length

An issue with the IJPDS input class, IIJPDSInput. The exhibit (vendor.ijp) reported an incorrect page size when stitched. Now corrected.


Incorrect page size when stitched and rotated 90° or 270°

An issue with the IJPDS input class, IIJPDSInput. The exhibit (vendor.ijp) reported an incorrect page size when rotated to landscape. Now corrected.


Return additional IJPDS job information

The customer expects the count of pages to be the same as the number of input pages on the job, regardless of the number of RIPs. Mako generates one page for each page/RIP combination, so it doesn't always match that expectation.

Providing the customer can find out the total number of pages and number of RIPs, they can calculate the number of input pages – it is then simple math to map from [inputPageNo, ripNo] -> pageNo

To support this easily (without breaking the API), new properties are added to the IDOMFixedPage class. The following table shows the properties:



Information returned



The input page number, starts at 0.



The RIP number, starts at 0 but can be -1, which indicates a blank page.



Job X resolution



Job Y resolution

This is a code example for obtaining a property from an IDOMFixedPage:

IDOMFixedPagePtr fixedPage = page->getContent();
PValue propertyValue;
fixedPage->getProperty("InputPageNo", propertyValue);
int32 inputPageNo = propertyValue.getInt32();

The total number of output pages is returned by getNumPages().

To get the number of RIPs in the job, loop through the first few pages and count the number of pages whose InputPageNo is 0. This yields the number of RIPs.

A modified makoconverter.cpp is available that illustrates how to obtain the required information from Mako.


IJPDS input: Text incorrectly positioned when stitched and rotated

When processing the exhibit (vendor.ijp) to PDF with stitching and rotating applied, it was found that some text may be incorrectly positioned at the bottom of pages 5, 6, 7, and 8. This occurs when stitching vertically and rotating 270 degrees, and when stitching horizontally and rotating 180 degrees. Other combinations do not appear to be affected. Now fixed by an adjustment to the layout calculation.


Fix IJPDS unit test failures when running on Windows x86

IJPDS processing requires a lot of memory and is not recommended for running as a 32-bit process. In this instance, certain unit tests were setting the IIJPDSInput() parameter retainpagecontents unnecessarily; turning this off solved the problem (at the expense of performance, of course).

Parameters such as this are set as follows:

IInputPtr = IInput::create (m_jawsMako, eFFIJPDS);
input->setParameter ("retainpagecontents", "false");

The Mako 6.2.3 distribution includes x64 binaries only.


IJPIn_InputPageNo_RipId.ByRipRot90 intermittently fail on macOS

This was found when running the unit test 1000 times; at round 800 iterations an exception occurred. The issue was tracked down to an incorrect memory allocation. Now fixed.


IJPDS Direct to Raster

A new class, IPageRaster, offers a faster method to get from a Mako input to raster output. It is essentially a generic framebuffer class that is returned by IPage::getPageRaster(). The caller can use this to obtain rasterized content instead of IPage::getContent(), which returns an IDOMFixedPage.

This is optional for every PDL, but currently only IIJPDSInput supports it. The IPageRaster class has enough information so that the caller can write it as an image. Sample code included in makoconverter.cpp shows how to do this.

For the public IJPDS interface an IJPDSPageRaster class (which inherits from IPageRaster) has been added so that the caller can get extra information like the input page number and RIP number.


MAKOSUP-10799 IJPDS crashes after getPageRaster() called 2x

When calling IPage::getContent(), the IDOMFixedPage is cached in IPage. The same approach has been implemented for IPage::getPageRaster(). However, care must be taken when processing large files with lots of pages, as this accumulated memory due to the page raster. To help with this, the cached page raster object is released when IPage::release() is called.


MAKO Version 6.2.3 is a Windows-only, 64-bit only release, consisting of Windows (static and dynamic libs, VS 2019 (V142), x64).

JavaScript errors detected

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

If this problem persists, please contact our support.