Aspose.Slides for Java 17.2.0 Release Notes

KeySummaryCategory
SLIDESNET-38125Check whether presentations master slides are identicalFeature
SLIDESNET-33650Identifying the merged cells in TableFeature
SLIDESNET-34143Refactor charts implementationFeature
SLIDESJAVA-35891Pptx not rendered correctlyBug
SLIDESJAVA-35888Distance between characters changes in resultant svg formatBug
SLIDESJAVA-35852Pptx not properly converted to pdfBug
SLIDESJAVA-35840Setting multi-level chart categories not workingBug
SLIDESJAVA-35836Bold effect not appliedBug
SLIDESJAVA-35827Hyperlink Value changed for portion textBug
SLIDESJAVA-35822Ole frame un-editable when saving presentationBug
SLIDESJAVA-35723Fonts loader crashesBug
SLIDESJAVA-24283StringIndexOutOfBoundsException on reading Hyperlink textBug

Public API Changes

equals(IBaseSlide) method has been added to IBaseSlide interface and BaseSlide class

Method signature:

bool equals(IBaseSlide slide);

It returns true for the slides / layout slides / master slides which identical by its structure and static content.

Two slides are equal if all shapes, styles, texts, animation and other settings. etc. are equal. The comparison doesn’t take into account unique identifier values, e.g. SlideId and dynamic content, e.g. current date value in Date Placeholder.

Example code snippet:

Presentation presentation1 = null;
Presentation presentation2 = null;
try {
    presentation1 = new Presentation("SomePresentation1.pptx");
    presentation2 = new Presentation("SomePresentation2.pptx");
    for (int i = 0; i < presentation1.getMasters().size(); i++)
    {
        for (int j = 0; j < presentation2.getMasters().size(); j++)
        {
            if (presentation1.getMasters().get_Item(i).equals(presentation2.getMasters().get_Item(j)))
                System.out.println("SomePresentation1 MasterSlide#" + i +" is equal to SomePresentation2 MasterSlide#" + j);
        }
    }
} finally {
    if (presentation1 != null) {
        presentation1.dispose();
        presentation1 = null;
    }
    if (presentation2 != null) {
        presentation2.dispose();
        presentation2 = null;
    }
}

isMergedCell() method has been added to ICell interface and Cell class

ICell.isMergedCell() method returns true if the cell is merged with any adjusted cell, false otherwise. It can be used to identify merged cells across the table.

Code snippet for output all merged cells in a table:

Presentation pres = null;
try
{
    pres = new Presentation("SomePresentationWithTable.pptx");

    ITable table = (ITable)pres.getSlides().get_Item(0).getShapes().get_Item(0); // assuming that Slide#0.Shape#0 is a table
    for (int i = 0; i < table.getRows().size(); i++)
    {
        for (int j = 0; j < table.getColumns().size(); j++)
        {
            ICell currentCell = table.getRows().get_Item(i).get_Item(j);
            if (currentCell.isMergedCell())
            {
                System.out.println(
                    "Cell " + i + ";" + j +" is a part of merged cell with RowSpan=" + currentCell.getRowSpan() +
                    " and ColSpan=" + currentCell.getColSpan() + " starting from Cell " + currentCell.getFirstRowIndex() +
                    ";" + currentCell.getFirstColumnIndex() + ".");
            }
        }

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