Skip to main content
Skip table of contents

Mako 6.1.1 Release Notes


New Features

MAKO-3320

Add equivalent of PDFLib's SetPageFilterRange to IDistiller

Three new API functions are added to IDistiller to specify which pages in a PostScript job are processed.

  • setPageFilterLow() sets a lower page limit
  • setPageFilterHigh() sets an upper page limit
  • setPageFilterRange() sets a range of pages to output

Use it in this way.

CPP
const auto mako = IJawsMako::create();
IJawsMako::enableAllFeatures(mako);
auto distiller = IDistiller::create(mako);

// High & Low
distiller->setPageFilterLow(10);
distiller->setPageFilterHigh(20);
distiller->distill(
    IInputStream::createFromFile(mako, "test100.ps"),
    IOutputStream::createToFile(mako, "test10-20.pdf")
);

// Range
distiller->setPageFilterRange(10, 20);
distiller->distill(
    IInputStream::createFromFile(mako, "test100.ps"),
    IOutputStream::createToFile(mako, "rangeTest10-20.pdf")
);

// Additionally setParameter() is also available to set the lower and upper limits. 
// This API expects values as strings, useful for command-line apps etc., e.g.
distiller->setParameter("PageFilterLow", "10");
distiller->setParameter("PageFilterHigh", "20");
C#
using JawsMako;

namespace MakoDistillerCheck
{
    class Program
    {
        static void Main(string[] args)
        {
            var mako = IJawsMako.create();
            IJawsMako.enableAllFeatures(mako);
            var distiller = IDistiller.create(mako);

            // High & Low
            distiller.setPageFilterLow(10);
            distiller.setPageFilterHigh(20);
            distiller.distill(
            IInputStream.createFromFile(mako.getFactory(), "test100.ps"),
            IOutputStream.createToFile(mako.getFactory(), "test10-20.pdf")
            );

            // Range
            distiller.setPageFilterRange(10, 20);
            distiller.distill(
            IInputStream.createFromFile(mako.getFactory(), "test100.ps"),
            IOutputStream.createToFile(mako.getFactory(), "rangeTest10-20.pdf")
            );

            // Additionally setParameter() is also available to set the lower and upper limits. 
            // This API expects values as strings, useful for command-line apps etc., e.g.
            distiller.setParameter("PageFilterLow", "10");
            distiller.setParameter("PageFilterHigh", "20");
        }
    }
}
JAVA
import java.math.*;

import com.globalgraphics.JawsMako.jawsmakoIF.*;

public class MakoDistillerCheck
{
   public static void main (String[] args)
    {
      var mako = IJawsMako.create();
      IJawsMako.enableAllFeatures(mako);
      var distiller = IDistiller.create(mako);

      // High & Low
      distiller.setPageFilterLow(BigInteger.valueOf(10));
      distiller.setPageFilterHigh(BigInteger.valueOf(20));
      distiller.distill(
         IInputStream.createFromFile(mako.getFactory(), "test100.ps"),
         IOutputStream.createToFile(mako.getFactory(), "test10-20.pdf")
      );

      // Range
      distiller.setPageFilterRange(BigInteger.valueOf(10), BigInteger.valueOf(10));
      distiller.distill(
         IInputStream.createFromFile(mako.getFactory(), "test100.ps"),
         IOutputStream.createToFile(mako.getFactory(), "rangeTest10-20.pdf")
      );

      // Additionally setParameter() is also available to set the lower and upper limits.
      // This API expects values as strings, useful for command-line apps etc., e.g.
      distiller.setParameter("PageFilterLow", "10");
      distiller.setParameter("PageFilterHigh", "20");
   }
}

  • Page numbers are expressed as actual page numbers, in line with the Jaws PDFLib API that this content replaces.
    This contrasts with all other page-related Mako APIs which use a zero-based numbering scheme.
  • This feature does not implement the JAWS PDFLib API SetPageFilterCallback().

MAKO-3350

IJPDS Performance improvement

In response to a customer request, the IJPDS input class has undergone significant refactoring that has resulted in an average performance increase of 71%. In particular, the method for obtaining the number of pages now returns almost immediately.

MAKO-335X

IJPDS input class: additional options to control assembly of output pages

The method to instantiate the class remains the same, but the available parameters have changed.

CPP
IIJPDSInputPtr input = IIJPDS::create(jawsMako);
input->setParameter("ripsetup", "cmyk");
C#
var input = IIJPDS.create(jawsMako);
input.setParameter("ripsetup", "cmyk");

A complete list of the available parameters follows. Items marked with an asterisk are new in this version.

IJPDSInput parameters

Parameter

Possible values

Description

ripsetup

mono

Default. Each RIP generates its own page.

cmyk

Groups RIPs together in blocks of four to generate a composite page.

riporder*


fromjob

RIPs are arranged in the order the job defines them. Default.

ordinal

RIPs are arranged sequentially in their ordinal numbering (starting from 0, for example, Rip0, Rip1, Rip2, Rip3, and so on).

0,1,2,3…

A comma-separated sequence of RIP IDs (a number from 0 to 15, or -1 if a blank is desired for that slot). This controls the sequence in which the RIPs are processed. By default, the order in which the RIP is defined by the job is followed.

0,1,3,2

Example: For CMYK output it is sometimes necessary to change the plate order (here 0,1,3,2 is specified) to obtain the correct composite output.

-1,2,-1,-1

Example: If -1 is encountered in CMYK output, then that separation is interpreted as a blank. This is useful to see a separation in a specific color. For example, specifying -1,2,-1,-1 uses the page from RIP 2 as the magenta plane with all other color planes blank. This results in a CMYK composite output where only RIP 2 comes out in a magenta color. For non-composite output, -1 is ignored, as it does not make sense to output a blank page.

Parameter

Possible values

Description

ripinterleave

Removed. Replaced by riporder.

collation*

bypage

Default. Output is ordered in page number major order. All the first pages from each RIP are output followed by the second pages, and so on.


byrip

Output is ordered by RIP major order. All the pages for RIP 1 are output followed by all the pages for RIP 2, and so on.

riprotate*

0

This denotes the rotation of a RIP separation in the output page.

The value is an angle in degrees, counter-clockwise.

Possible values are 0, 90, 180, and 270; the default value is 0.

90

180

270

stitch*

true (or 1)

Individual RIP separations are combined into one page by stitching them together. Default.

The orientation of the stitching can be controlled by the stitchhorizontal parameter.

false (or 0)

Individual RIP separations are each output as separate pages.

stitchhorizontal*

true (or 1)

The RIP separations are stitched in a horizontal orientation.


false (or 0)

The RIP separations are stitched in a vertical orientation. Default.

resourcedirectory

<path to resources folder>

Sets the directory where remote resources are located (that is, resources referenced by the IJPDS but external to it).

Distribution

MAKO Version 6.1.1 is built for the following platforms:

  • Linux (for Debian-based distributions, e.g., Ubuntu, Mint)
  • Linux (Centos)
  • Linux (for Debian Stretch)
  • Linux (for MUSL distributions, e.g., Alpine Linux)
  • macOS
  • Windows (static and dynamic libs, VS 2019 (V142), x86 and x64)

Mako supports the following programming languages:

  • C++ (Mako is written in C++)
  • C# (.Net Framework and .Net Core)
  • Java (built with OpenJDK11)
  • Python (v3.8)

The alternatives to C++ are built using SWIG (www.swig.org) which provides a translation to the native libraries, found in these distribution folders:

  • Linux_SWIG_(C#-Java-Python)
  • macOS_SWIG_(C#-Java-Python)
  • Windows_SWIG_(C#-Java-Python)


JavaScript errors detected

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

If this problem persists, please contact our support.