Mako 7.5.0 Release Notes
Introduction
This is the latest and final Mako 7.x release, although there may be 7.5.x releases, should they be necessary. Otherwise, the next major release is Mako 8.0 that will debut at the end of Q1 (end of March) 2025. This is a longer than usual development cycle, and that is because we have been working on a new technology that uses a GPU to accelerate rendering, a very exciting development. Users of the Mako Core SDK will be the first Global Graphics customers that will be able to license this new technology for use in their own developments.
This release of Mako is focused entirely on customer issues. Solutions for specific support issues included in this release are labelled MAKOSUP-XXXXX. The link is live and can be followed to the Mako support portal, but work only for the customer who reported it.
Issues addressed
MAKO-5053 MAKOSUP-11440 PDF Input: Tag transparency groups with properties indicating which Form XObject they were generated from
This is a small additional feature for a customer that needs to be able to show in their UI details about forms.
This change adds two new integral properties to transparency groups for regular (non-page, non-soft mask) transparency groups:
GroupXObjectNum
GroupXObjectGeneration
Assuming an IDocumentAssemblyPtr
opened from a PDF, this code snippet shows how to access those properties.
// Find the transparency groups
CEDLVector<IDOMNodePtr> groups;
assembly->getDocument()->getPage(0)->getContent()->findChildrenOfType(eDOMTransparencyGroupNode, groups);
for (uint32 i = 0; i < groups.size(); i++)
{
std::cout << "Object number: " << i << '\n';
PValue value;
groups[i]->getProperty("GroupXObjectNum", value);
std::cout << " GroupXObjectNum: " << value.getInt32() << '\n';
groups[i]->getProperty("GroupXObjectGeneration", value);
std::cout << " GroupXObjectGeneration: " << value.getInt32() << '\n';
}
MAKO-4972 MAKOSUP-11449 Opening a PDF fails with “Internal RIP error: PS undefined error”
An error dealing with a font with an unusual combination of flags in a font header. Now fixed.
MAKO-4986 MAKOSUP-11451 Attached PDF crashes MAKO
The customer case has an SMask /G
entry that points to an object that does not exist. Other tools seem to allow this, and now Mako will too.
MAKO-5045 MAKOSUP-11456 Encrypting a PDF1.5 results in a broken PDF
The customer is attempting to write a PDF to a read only file with PDF linearization enabled, and they expect it to fail. It does indeed fail, but the error is not reported to the user. This is now fixed.
MAKO-4992 MAKOSUP-11457 Triangle border lines in area fills
An improvement to Mako 7.4.0 to improve SVG output when zero-width lines are present in the PDF had the unintended effect of causing some line endings to be drawn as mitre joins which look odd. This change solves that problem by ensuring bevel joins are applied in those circumstances
MAKO-5080 MAKOSUP-11488 Incorrect EXO font rendering when converting from XPS to PDF
Now fixed.
MAKO-4995 MAKOSUP-11464 Internal RIP error generating thumbnails or validating the PDF file
Fix an issue to enable the customer file to process normally.
MAKO-5058 MAKOSUP-11471 Mako RIP Error
A customer PDF file triggered an exception during input. Now fixed.
MAKO-5054 MAKOSUP-11472 Converting PDF file to PS file causes output to be very large.
Support is added for caching of synthetic, non-noisy masked images. For the customer case, this dramatically reduced the size of the output.
MAKO-5064 MAKOSUP-11487 Support multichannel TIFF images with ICC profiles
A customer TIFF file with eight channels contains an eight-channel ICC profile that they want to retain when converting to PDF. For PHOTOMETRIC_SEPARATED images, this change implements simple logic that, when multichannel support is enabled, the ICC profile is present, and the profile has the same number of components, the ICC profile is used instead of inventing a DeviceN
color space.
MAKO-5061 MakoSplitter crashes with STATUS_HEAP_CORRUPTION
The sample MakoSplitter works by extracting one or more pages from a source document and writing them to disk as a separate PDF, on several threads for performance. When the “deep copy” option is used, it causes multiple processes to access the source document’s catalog simultaneously, eventually causing a deadlock. Now fixed.
MAKO-5070 Mako unable to open customer file
Work around an invalid PDF that had a ExtGState
dictionary that defined a blend mode with a string value, which is invalid, rather than a name or array object.
MAKO-5073 Non-embedded Japanese TrueType fonts are substituted with unsuitable CID font
For the customer exhibit, the principal issue is that the font names generated by Mako for the output do not match the input font names. This affects Acrobat’s ability to select a good substitute. While testing the change, two further issues were found that affect font selection, namely FontDescriptor
flags (which contain style information) and Panose (font matching) information. Mako now attempts to preserve this information, if present.
MAKO-5083 SDFESUP-1099 Character corrupted by a Mako process in SDFE
Now fixed.
Distribution
MAKO Version 7.5.0 is built for the following platforms:
iOS
macOS
Linux (for Debian-based distributions, eg Ubuntu 22.04 LTS, Mint)
Linux (for Debian Bullseye)
Linux (for Debian Buster)
Linux (for Alpine Linux v3.17)
Linux (CentOS8)
Linux (Red Hat Enterprise v8.4)
Linux (for Debian Buster) (arm32v7 for Raspberry Pi)
Linux (for Debian Bullseye) (arm64v8 for Raspberry Pi)
Windows (static and dynamic libs, VS 2019 (V142), x86, x64 and ARM64)
Windows (static and dynamic libs, VS 2017 (V141), x64)
Windows UWP/WinRT
The Android build is excluded from this release. Contact MAKO support if you need MAKO for Android.
MAKO supports the following programming languages.
C++ (MAKO is written in C++)
C# (.Net Core (multiple platforms) and .Net Framework (Windows only))
Java (built with OpenJDK11 and therefore compatible with later versions.)
Python (v3.8 / 3.9)
The alternatives to C++ are built using SWIG (http://www.swig.org ) which provides a translation to the native libraries. They found in these distribution folders, found in the SWIG folder:
Linux_SWIG_(C#-Java-Python)
Linux_Alpine_(C#-Java-Python) – Alpine v3.17
Linux_Centos8_SWIG_(C#-Java-Python)
Linux_Ubuntu_SWIG_(C#-Java-Python)
macOS_SWIG_(C#-Java-Python)
Windows_SWIG_(C#-Java-Python)
Cross-platform Java build
The folder SWIG/CrossPlatformJAR contains Java builds that combine the implementations for multiple platforms into a single JAR package, thereby simplifying deployment. The folder contains two combinations, one for Windows & Linux and another for Windows, Linux and macOS. A pre-built sample app (MAKOconverter.jar) is included.
ColorLogic
MAKO is available with the ColorLogic CMM, supplied by our Hybrid Group sister company, ColorLogic Gmbh. All builds can be found in the ColorLogic folder. C++ builds are available for Windows, macOS and Linux, and there is also a Windows SWIG build for development with C#, Java or Python that uses the ColorLogic CMM.