Aspose.Slides for Java 16.8.0 Release Notes

Key Summary Category
SLIDESJAVA-35613 Support for colorizing added images in Aspsoe.Slides Feature
SLIDESJAVA-35002 Getting position of Text inside slide shape TextFrame Feature
SLIDESJAVA-34979 Possibility to obtain effective TextFrame Margin values Feature
SLIDESJAVA-34419 Support for fixed HTML export in Aspose.Slides Feature
SLIDESNET-37787 Implementation of ClassIdentifier Property Feature
SLIDESNET-37760 Support removing embedded fonts in the PowerPoint Feature
SLIDESNET-37738 Implementation of OpenDocument presentation template Feature
SLIDESNET-37737 Export to Responsive HTML format Feature
SLIDESNET-37537 Support for removing embedded fonts from presentation Feature
SLIDESNET-36731 Possibility to obtain effective TextFrameFormat value Feature
SLIDESNET-36720 Support for fixed HTML export in Aspose.Slides Feature
SLIDESJAVA-35618 Wrong text position Bug
SLIDESJAVA-35617 Character misplaced after converting to svg Bug
SLIDESJAVA-35616 Image is not rendered correctly in exported PDF Bug
SLIDESJAVA-35615 Wrong bullet number rendered for exported PDF Bug
SLIDESJAVA-35612 Text color changes after converting pptx to pdf Bug
SLIDESJAVA-35607 Exception on adding connector Bug
SLIDESJAVA-35606 Losing sound on cloning Bug
SLIDESJAVA-35590 Image missing while converting ppt to svg Bug
SLIDESJAVA-35583 Missing Text and error after converting to svg Bug
SLIDESJAVA-35582 Underline Color Improperly read Bug
SLIDESJAVA-35577 Bullets are not appeared correctly after converting to svg Bug
SLIDESJAVA-35576 Exception on saving pptx Bug
SLIDESJAVA-35566 Presentation not saving Bug
SLIDESJAVA-35562 Exception on loading ppt Bug
SLIDESJAVA-35553 Slide to svg conversion:slides colors are changed after saving ppt Bug
SLIDESJAVA-35528 Invalid jpeg marker error when converting to HTML Bug
SLIDESJAVA-35527 Borders around equations and charts appearing on saving presentation Bug
SLIDESJAVA-35519 Value cannot be null on saving PPT presentation Bug
SLIDESJAVA-35458 Image relationship getting changed in saved presentation Bug
SLIDESJAVA-35429 Xml changed on load and save Bug
SLIDESJAVA-35386 Element already exists exception on loading presentation Bug
SLIDESJAVA-35361 Ppt to pdf slow conversion Bug
SLIDESJAVA-35329 Extract text from Handout Master page using Aspose.Slides fails Bug
SLIDESJAVA-35328 Extract text from Notes Master page using Slides fails Bug
SLIDESJAVA-35292 PDF notes are not rendering for for ppt file Bug
SLIDESJAVA-35269 Data sheet cannot be edited after slide cloning Bug
SLIDESJAVA-34804 Presentation loading time is too much. Bug
SLIDESJAVA-34783 Significant performance and memory overhead after upgrade from earlier version 8.6.0 Bug
SLIDESJAVA-33726 Several bugs in Aspose.Slides 6.9.1 Bug

Public API Changes

createTextFrameFormatEffective() method has been added to TextFrame class and ITextFrame interface

It returns effective value of text frame format for the TextFrame object. Returned type is ITextFrameFormatEffectiveData.

Interface com.aspose.slides.ITextFrameFormatEffectiveData has been added

Represents effective values (formatting values with inheritance applied) of text frame format. It contains the following methods:

  • ITextStyleEffectiveData getTextStyle() — Returns effective text’s style.
  • double getMarginLeft() — Returns the left margin (points) in a TextFrame.
  • double getMarginRight() — Returns the right margin (points) in a TextFrame.
  • double getMarginTop() — Returns the top margin (points) in a TextFrame.
  • double getMarginBottom() — Returns the bottom margin (points) in a TextFrame.
  • boolean getWrapText() — Returns if text is wrapped at TextFrame’s margins.
  • byte getAnchoringType() — Returns vertical anchor text in a TextFrame.
  • boolean getCenterText() — Returns if text should be centered in box horizontally.
  • byte getTextVerticalType() — Returns text orientation.
  • byte getAutofitType() — Returns text autofit mode.

Code example:

Presentation pres = new Presentation("pres.pptx");
try{
    ISlide slide = pres.getSlides().get_Item(0);
    IShape shape = slide.getShapes().get_Item(0);
    ITextFrame textFrame = ((AutoShape)shape).getTextFrame();
    ITextFrameFormatEffectiveData textFrameFormatEffective = textFrame.createTextFrameFormatEffective();
    System.out.println("margin top: " + textFrameFormatEffective.getMarginTop());
    System.out.println("margin left: " + textFrameFormatEffective.getMarginLeft());
    System.out.println("margin right: " + textFrameFormatEffective.getMarginRight());
    System.out.println("margin bottom: " + textFrameFormatEffective.getMarginBottom());
} finally {
    if(pres != null) pres.dispose();
}

Interface com.aspose.slides.ITextStyleEffectiveData has been added

Represents effective values (formatting values with inheritance applied) of text style. It contains the following methods:

  • IParagraphFormatEffectiveData getLevel(int index) — Returns level of effective style.
  • IParagraphFormatEffectiveData getDefaultParagraphFormat() — Returns effective default paragraph properties.

Code example:

Presentation pres = new Presentation("pres.pptx");
try{
    ISlide slide = pres.getSlides().get_Item(0);
    IShape shape = slide.getShapes().get_Item(0);
    ITextFrame textFrame = ((AutoShape)shape).getTextFrame();
    ITextFrameFormatEffectiveData textFrameFormatEffective = textFrame.createTextFrameFormatEffective();

    ITextStyleEffectiveData textStyleEffective = textFrameFormatEffective.getTextStyle();

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

New classes were added, intended to provide the functionality to embed EOT and WOFF fonts into generated HTML document

The two new classes were added to provide the functionality to embed WOFF and EOT fonts into generated HTML document:

  • EmbeddedWoffFontsHtmlController
  • EmbeddedEotFontsHtmlController

Below is an example of how to use the new EmbeddedWoffFontsHtmlController class to export HTML with embedded WOFF fonts:

Presentation pres = new Presentation("pres.pptx");
try
{
    EmbeddedWoffFontsHtmlController controller = new EmbeddedWoffFontsHtmlController();
    HtmlOptions htmlOptions = new HtmlOptions();
    htmlOptions.setHtmlFormatter(HtmlFormatter.createCustomFormatter(controller));

    pres.save("pres.html", SaveFormat.Html, htmlOptions);
} finally {
    if(pres != null) pres.dispose();
}

New interface IResponsiveHtmlController and class ResponsiveHtmlController have been added

The new class was added intended to provide the responsive HTML to the generated HTML files: ResponsiveHtmlController.

This controller can be used in the same manner as other HTML controllers:

Presentation pres = new Presentation("pres.pptx");
try
{
    ResponsiveHtmlController controller = new ResponsiveHtmlController();
    HtmlOptions htmlOptions = new HtmlOptions();
    htmlOptions.setHtmlFormatter(HtmlFormatter.createCustomFormatter(controller));

    pres.save("pres.html", SaveFormat.Html, htmlOptions);
} finally {
    if(pres != null) pres.dispose();
}

New methods have been added to com.aspose.slides.FontsManager

The following new methods have been added to IFontsManager interface and FontsManager class:

IFontData[] getEmbeddedFonts() - this method returns the fonts embedded in the presentation.
void removeEmbeddedFont(IFontData fontData) - this method removes the embedded font from the presentation.

There is the sample demonstrates the use case for these new methods:

// load the presentation with embedded "FunSized" font in it
Presentation pres = new Presentation("pres.ppt");
try
{
    // render the presentation containing the text frame with the text using embedded "FunSized" font
    ImageIO.write(pres.getSlides().get_Item(0).getThumbnail(new Dimension(960, 720)), "PNG", new File("pres-1.png"));

    IFontsManager fontsManager = pres.getFontsManager();

    // get all embedded fonts
    IFontData[] embeddedFonts = fontsManager.getEmbeddedFonts();

    // find "FunSized" font
    IFontData funSizedEmbeddedFont = null;
    for(int i = 0; i < embeddedFonts.length; i++)
        if("FunSized".equals(embeddedFonts[i].getFontName())){
            funSizedEmbeddedFont = embeddedFonts[i];
            break;
        }

    // remove "FunSized" font
    fontsManager.removeEmbeddedFont(funSizedEmbeddedFont);

    // render the presentation after removing the "FunSized" font resulting in a font replacement from "FunSized" to an existing one
    ImageIO.write(pres.getSlides().get_Item(0).getThumbnail(new Dimension(960, 720)), "PNG", new File("pres-2.png"));

    // save the presentation without embedded "FunSized" font
    pres.save("37537-2.ppt", SaveFormat.Ppt);
} finally {
    if(pres != null) pres.dispose();
}