Aspose.Slides for Java 16.12.0 Release Notes

Key Summary Category
SLIDESNET-38070 Set distance between tick mark on horizontal axis Feature
SLIDESJAVA-35669 Getting duration of extracted video from presentation Feature
SLIDESJAVA-35643 AnimationEffect.Disappear is unavailable in Aspose.Slides Bug
SLIDESJAVA-35758 Exception on generating thumbnails Bug
SLIDESJAVA-35756 Font size distorted when converting PPTX to JPG Bug
SLIDESJAVA-35732 Exception on saving presentation Bug
SLIDESJAVA-35726 Hang cpu when converting from pptx file to JPG Bug
SLIDESJAVA-35721 Exception on saving presentation Bug
SLIDESJAVA-35719 Presentation not saving Bug
SLIDESJAVA-35717 Exception on loading presentation Bug
SLIDESJAVA-35713 Issue while converting pptx to pdf Bug
SLIDESJAVA-35689 Missing table on Notes Master Bug
SLIDESJAVA-35683 Different Footers placeholders recognized in ppt and pptx Bug
SLIDESJAVA-35678 Exception on loading presentation Bug
SLIDESJAVA-35550 Error: Converting Slides with charts to svg Bug
SLIDESJAVA-35324 PptxReadException while loading presentation Bug
SLIDESJAVA-34966 Incorrect thumbnail of slide with chart Bug
SLIDESJAVA-33654 Wrong display units for value axis is displayed for Scatter chart in exported PDF Bug
SLIDESJAVA-33653 The value axis values direction changes in exported PDF Bug

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.