Aspose.Slides for Java 16.12.0 Release Notes

SLIDESNET-38070Set distance between tick mark on horizontal axisFeature
SLIDESJAVA-35669Getting duration of extracted video from presentationFeature
SLIDESJAVA-35643AnimationEffect.Disappear is unavailable in Aspose.SlidesBug
SLIDESJAVA-35758Exception on generating thumbnailsBug
SLIDESJAVA-35756Font size distorted when converting PPTX to JPGBug
SLIDESJAVA-35732Exception on saving presentationBug
SLIDESJAVA-35726Hang cpu when converting from pptx file to JPGBug
SLIDESJAVA-35721Exception on saving presentationBug
SLIDESJAVA-35719Presentation not savingBug
SLIDESJAVA-35717Exception on loading presentationBug
SLIDESJAVA-35713Issue while converting pptx to pdfBug
SLIDESJAVA-35689Missing table on Notes MasterBug
SLIDESJAVA-35683Different Footers placeholders recognized in ppt and pptxBug
SLIDESJAVA-35678Exception on loading presentationBug
SLIDESJAVA-35550Error: Converting Slides with charts to svgBug
SLIDESJAVA-35324PptxReadException while loading presentationBug
SLIDESJAVA-34966Incorrect thumbnail of slide with chartBug
SLIDESJAVA-33654Wrong display units for value axis is displayed for Scatter chart in exported PDFBug
SLIDESJAVA-33653The value axis values direction changes in exported PDFBug

Public API Changes

Metered class has been added

Metered class has been added. It provides methods to set metered key and check consumption quantity for associated metered account. This new licensing method will be accessible soon. Public methods

  • Metered() Initializes a new instance of this class.
  • static BigDecimal getConsumptionQuantity() Gets consumption quantity.
  • void setMeteredKey(String publicKey, String privateKey) Sets metered public and private key. parameters:
  • publicKey Metered pubilc key.
  • privateKey Metered private key.

Usage example:

Metered metered = new Metered();
metered.setMeteredKey("PublicKey", "PrivateKey");
BigDecimal consumption = Metered.getConsumptionQuantity();

Methods getPicturesCompression(), setPicturesCompression(), getDeletePicturesCroppedAreas() and setDeletePicturesCroppedAreas() have been added to HTML and SVG options

Methods getPicturesCompression(), setPicturesCompression(), getDeletePicturesCroppedAreas() and setDeletePicturesCroppedAreas() have been added to IHtmlOptions and ISVGOptions.

PicturesCompression is an enum containing the following values:

  • Dpi330 good quality for high-definition (HD) displays
  • Dpi220 excellent quality on most printers and screens
  • Dpi150 good for web pages and projectors
  • Dpi96 minimize document size for sharing
  • Dpi72 default compression level
  • DocumentResolution use document resolution the picture will not be compressed and used in document as-is

The value affects the pictures quality in generated SVG/HTML documents. Please note that the higher DPI, the larger resulting document.

DeletePicturesCroppedAreas is a boolean flag indicating if the cropped parts remain as part of the document. If true the cropped parts will be removed, if false they will be serialized in the document (which can possibly lead to a larger SVG/HTML file).

Here’s an example of export the presentation to SVG and HTML documents with 220 and 96 DPI respectively:

Presentation pres = new Presentation("pres.pptx");
    FileOutputStream stream = new FileOutputStream("pres.svg");
        SVGOptions svgOptions = new SVGOptions();
        pres.getSlides().get_Item(0).writeAsSvg(stream, svgOptions);
    } finally {
        if(stream != null) stream.close();

    HtmlOptions htmlOptions = new HtmlOptions();
    htmlOptions.setPicturesCompression(PicturesCompression.Dpi96);"pres.html", SaveFormat.Html, htmlOptions);
} finally {
    if(pres != null) pres.dispose();

Methods getTickMarksSpacing(), setTickMarksSpacing(), isAutomaticTickMarksSpacing() and setAutomaticTickMarksSpacing() have been added.

Methods isAutomaticTickMarksSpacing() and setAutomaticTickMarksSpacing() give ability to specify automatic tick marks spacing value. If false: use setTickMarksSpacing() method.

Methods getTickMarksSpacing() and setTickMarksSpacing() give ability to specify how many tick marks shall be skipped before the next one shall be drawn. Applied to category or series axis.

Presentation pres = new Presentation();
    IChart barChart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredBar, 50, 50, 600, 400, true);


} finally {
    if(pres != null) pres.dispose();

New static method getHeader() has been added to class FieldType

The new static method getHeader() has been added to class FieldType. It allows getting the instance of FieldType class that represents “header” field type.

public static FieldType getHeader()

The new API can be used like this:

Presentation pres = new Presentation("presentation.ppt");
    ISlide slide = pres.getSlides().get_Item(0);
    IAutoShape shape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = shape.getTextFrame().getParagraphs().get_Item(0);
    for (int portionIndex = 0; portionIndex < paragraph.getPortions().getCount(); portionIndex++)
        IPortion portion = paragraph.getPortions().get_Item(portionIndex);
        IField field = portion.getField();
        // FieldType.getHeader() method is used to find portion with appropriate field type
        if (field != null && field.getType() == FieldType.getHeader()) 
} finally {
    if(pres != null) pres.dispose();

SvgExternalFontsHandling enum has been added. Methods getExternalFontsHandling() and setExternalFontsHandling() have been added to ISVGOptions and SVGOptions

Methods getExternalFontsHandling() and setExternalFontsHandling() have been added to ISVGOptions interface and SVGOptions class with return type of SvgExternalFontsHandling enum.

This property defines how Aspose.Slides should handle externally loaded fonts during slide export to SVG format.

There are 3 possible options:

  • SvgExternalFontsHandling.AddLinksToFontFiles. In this case a separate css definition will be added to svg/defs section per each font that was actually used for some piece of text on the slide and was loaded externally by calling to FontsLoader.LoadExternalFonts method. Each definition contains local links to 3 separate font types: TTF, EOT and WOFF. To work correctly font files must be placed in the same directory as SVG file (could be copied there after the export) and must be named the same as original TTF file (for example FancyFont.ttf, FancyFont.eot, FancyFont.woff). If some of the fonts is missing there will be no error, but the resulting SVG file could be rendered incorrectly in some browsers (please take a look to ‘Font-browsers compatibility’ section below).
  • SvgExternalFontsHandling.Embed. In this case the same css definitions will be added based on the same principle, but the font files content will be embedded directly to SVG file. Choosing this option user should place EOF and WOFF versions of the font to the same directory as original TTF file (the path to which is passed to FontsLoader.LoadExternalFonts method) before the export. If some of the fonts are missing it won’t be added to SVG file at all and again it could result incorrect rendering in some browsers.
  • SvgExternalFontsHandling.Vectorize. In this case the text that uses externally loaded fonts will be transformed to graphical objects. It works the same way as when SVGOptions.Vectorize property is set to true, but only for external fonts.

Font-browser compatibility

To make result SVG file rendered correctly in most of modern browsers two additional font files format are recommended to be used along with regular TTF file.

  • EOT (Embedded Open Type) for compatibility with all versions of IE.
  • WOFF (Web Open Font Format) for compatibility with all other browsers and as an alternative to TTF.

If you don’t have a copy of the font in these formats, you can use a wide variety of 3rd party tools that allows to convert TTF file to EOT and WOFF formats.

Font license restrictions

Please take a note that some fonts might have restrictions on embedding or/and any other kind of distribution. Always check font license agreement before converting, copying or embedding it to SVG file.