Aspose.Words for Java 20.3 Release Notes

Major Features

  • FindReplaceOptions class is extended with new properties.
  • Implemented the correct rendering of the “Letterlike” symbols.
  • Supported dynamic stretching of an image within textbox bounds preserving the ratio of the image for the LINQ Reporting Engine.

Full List of Issues Covering all Changes in this Release

Key Summary Category
WORDSNET-18362 LINQ Reporting Engine - Provide option to fit the image within textbox bounds while maintaining ratio New Feature
WORDSNET-19568 Provide ability to set different attributes of Shape inside IFieldMergingCallback.ImageFieldMerging New Feature
WORDSNET-19912 FindReplaceOptions new properties New Feature
WORDSNET-20012 Implement color change for side faces New Feature
WORDSNET-3297 Consider adding an ability to get column of table by bookmark New Feature
WORDSNET-19935 Implement correct contour rendering for volume shapes New Feature
WORDSNET-19469 Axis, data and legend labels in chart are missing/wrong/in different colors in PDF converted from DOCX Enhancement
WORDSNET-19815 Do not convert ODT chart to shape Enhancement
WORDSNET-19998 Implement correct contour rendering for non convex shapes Enhancement
WORDSJAVA-2208 Amend documentation of HtmlSaveOptions.Encoding Property Bug
WORDSJAVA-2209 Improve documentation of CompatibilityOptions.UsePrinterMetrics property Bug
WORDSJAVA-2326 Do not write BOM for some specific Encodings. Bug
WORDSJAVA-2239 Inline VML lines pixel shifts. Bug
WORDSNET-15635 Arrow shape shifts towards left in rendered document Bug
WORDSNET-19233 Extra blank page when saving MHTML into JPG/PNG/PDF Bug
WORDSNET-18325 DOCX to PDF conversion issue with Arabic text rendering Bug
WORDSNET-18389 Some Arabic characters look different in PDF rendition Bug
WORDSNET-17392 Document.PageCount returns incorrect value Bug
WORDSNET-18583 DOCX to PDF conversion issue with hanging indent of text Bug
WORDSNET-19670 Analyze if .NET Standard can cover Xamarin platforms Bug
WORDSNET-19559 Indenting of bullet point in converted TIFF file Bug
WORDSNET-19960 System.StackOverflowException is thrown while loading DOC Bug
WORDSNET-14306 DOCX to PDF conversion issue with image rendering Bug
WORDSNET-14729 Word to PDF conversion has issues with images Bug
WORDSNET-20039 System.InvalidCastException is thrown while saving DOCX to PDF Bug
WORDSNET-17340 Issue in PDF conversion with images and text field Bug
WORDSNET-19717 Formatting of double quote is lost after calling Document.UpdateFields Bug
WORDSNET-18540 DOCX to PDF conversion issue with text position Bug
WORDSNET-19589 PDF rendition is not accurate and few pages are missed Bug
WORDSNET-19970 Generated html cuts off picture and overlaps footer content Bug
WORDSNET-19971 Word save to PDF numbering problem in List Bug
WORDSNET-19967 System.InvalidCastException is thrown while saving document to PDF after comparing DOCXs Bug
WORDSNET-19957 Floating point numbers aren’t saved in CustomDocumentProperties for RTF files Bug
WORDSNET-19726 Text Columns are changed after using DocumentBuilder.InsertDocument Bug
WORDSNET-19818 Footnotes issue while converting to PDF Bug
WORDSNET-19842 Field “SaveDate” is initially not set Bug
WORDSNET-19905 Setting any Value for Font.NoProofing Turns Off Proofing in RTF Document Bug
WORDSNET-19987 Tables are missing while XML to DOCX document conversion Bug
WORDSNET-19204 NumberFormat.FormatCode does not work for Currency symbols Bug
WORDSNET-19988 Garbled characters when loading RTF and saving as DOCX Bug
WORDSNET-19989 Incorrect rendering of the legend item of the series with border Bug
WORDSNET-19991 Page margins are changed after inserting document into template using InsertDocument Bug
WORDSNET-19997 ODT document layout is changed Bug
WORDSNET-19909 DOCX>HTML>DOCX conversion issue with indentation and spacing Bug
WORDSNET-19276 Extra text appears besides table in PDF Bug
WORDSNET-19999 Remove obsolete property DigitalSignature.Certificate and CertificateHolder.Create Bug
WORDSNET-18883 Rendering order for floating TextFrame Bug
WORDSNET-20018 AutoOpen Macro does not work after calling VBAProject.Clone using C# Bug
WORDSNET-18872 Document language is changed from Hebrew to Arabic after DOCX>HTML>DOCX Bug
WORDSNET-19776 PRINTDATE does not render correctly in output PDF Bug
WORDSNET-18884 Word to PDF or SVG conversion - repeated table headers not being displayed Bug
WORDSNET-19918 NullReference exception if call UpdateFields before Save Bug
WORDSNET-19919 Exception while converting HTML to Words Bug
WORDSNET-19786 Hyperlink is changed after conversion from DOCX to PDF Bug
WORDSNET-19927 Inserting Table into document: font size is missing in inserted table Bug
WORDSNET-19930 Vertical character has been changed to horizontal character in PDF Bug
WORDSNET-19928 Japanese text - incorrect line wrapping in PDF Bug
WORDSNET-19937 Aspose.Words Detects PDF Files as TEXT Bug
WORDSNET-19417 While converting to PDF the code throws NullPointerException on saving document Bug
WORDSNET-19836 Fails insert list during saving to existing .md document Bug
WORDSNET-19954 Page background and text color is changed after RTF to TIFF conversion Bug
WORDSNET-19147 NodeRendererBase.Save does not render OfficeMath correctly Bug
WORDSNET-19150 OfficeMath rendering is incorrect Bug
WORDSNET-19148 Problem with OfficeMath rendering Bug
WORDSNET-19451 Image is lost after conversion from DOCX to PDF at Azure Bug
WORDSNET-16662 GroupShape truncates in rendered PDF Bug
WORDSNET-13800 Diagram gets messed up during open/save to PDF Bug
WORDSNET-14754 Japanese ‘onbiki’ symbol rendered incorrectly after conversion from .RTF Bug
WORDSNET-16999 A Drawing renders partially in generated PDF Bug
WORDSNET-17339 Issue in PDF conversion with images and text field Bug
WORDSNET-8588 Symbols are rotated when DOCX is converted to PDF Bug
WORDSNET-8665 Table position is changed after conversion from DOCX to PDF Bug
WORDSNET-19690 Assertion in debug code when saving to PDF Bug
WORDSNET-19934 Incorrect page count value for .ODT format Bug
WORDSNET-15353 Image position is changed in output PDF Bug
WORDSNET-19986 Application hangs when opening HTM file Bug

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 20.3. It includes not only new and obsoleted public methods, but also a description of any changes in the behavior behind the scenes in Aspose.Words which may affect existing code. Any behavior introduced that could be seen as regression and modifies existing behavior is especially important and is documented here.

Added a new public property SaveOptions.UpdateLastPrintedProperty

Related issue: WORDSNET-19776

Added a new public property SaveOptions.UpdateLastPrintedProperty:

.NET

/// <summary>
/// Gets or sets a value determining whether the BuiltInDocumentProperties.LastPrinted property is updated before saving.
/// </summary>
public bool UpdateLastPrintedProperty

It’s true by default for FixedPageSaveOptions.

Use Case:

.NET

Document doc = new Document(docPath);
SaveOptions saveOptions = new PdfSaveOptions();
saveOptions.UpdateLastPrintedProperty = false;
doc.Save(pdfPath, saveOptions);

Added the ImageFieldMergingArgs.Shape property

Reference: WORDSNET-19568

A customer requested controlling various image properties when merging an image merge field, in particular, WrapType. Currently, it is only possible to set image width or height using the ImageFieldMergingArgs.ImageWidth and ImageFieldMergingArgs.ImageHeight properties, respectively.

We’ve opted for a more generic approach and decided to provide full control over the image (or any other shape) being inserted. We’ve introduced the ImageFieldMergingArgs.Shape property:

.NET

/// <summary>
/// Specifies the shape that the mail merge engine must insert into the document.
/// </summary>
/// <remarks>
/// <p>When this property is specified, the mail merge engine ignores all other properties like <see cref="ImageFileName"/> or <see cref="ImageStream"/>
/// and simply inserts the shape into the document.</p>
/// <p>Use this property to fully control the process of merging an image merge field.
/// For example, you can specify <see cref="ShapeBase.WrapType"/> or any other shape property to fine tune the resulting node. However, please note that
/// you are responsible for providing the content of the shape.</p>
/// </remarks>
public Shape Shape { get; set; }

As the summary states, this property overrides others like ImageFileName or ImageStream, i.e. the user just specifies a shape they want to insert with all necessary properties set:

.NET

private class TestShapeSetFieldMergingCallback : IFieldMergingCallback
{
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
    {
        //  Implementation is not required.
    }
    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        Shape shape = new Shape(args.Document);
        shape.Width = 1000;
        shape.Height = 2000;
        shape.WrapType = WrapType.Square;
        string imageFileName = "image.png";
        shape.ImageData.SetImage(imageFileName);
        args.Shape = shape;
    }
}

FindReplaceOptions class is extended with new properties

Related issue: WORDSNET-19912.

The following public properties were added to FindReplaceOptions class:

.NET

/// <summary>
/// Gets or sets a boolean value indicating either to ignore text inside delete revisions.
/// The default value is <c>false</c>.
/// </summary>
public bool IgnoreDeleted

.NET

/// <summary>
/// Gets or sets a boolean value indicating either to ignore text inside insert revisions.
/// The default value is <c>false</c>.
/// </summary>
public bool IgnoreInserted

.NET

/// <summary>
/// Gets or sets a boolean value indicating either to ignore text inside fields.
/// The default value is <c>false</c>.
/// </summary>
public bool IgnoreFields

Use Case 1. Explains how to ignore text inside delete revisions:

.NET

// Create new document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert non-revised text.
builder.Writeln("Deleted");
builder.Write("Text");

// Remove first paragraph with tracking revisions.
doc.StartTrackRevisions("author", DateTime.Now);
doc.FirstSection.Body.FirstParagraph.Remove();
doc.StopTrackRevisions();
Regex regex = new Regex("e");
FindReplaceOptions options = new FindReplaceOptions();

// Replace 'e' in document ignoring deleted text.
options.IgnoreDeleted = true;
doc.Range.Replace(regex, "*", options);
Console.WriteLine(doc.GetText());
 // The output is: Deleted\rT*xt\f

// Replace 'e' in document NOT ignoring deleted text.
options.IgnoreDeleted = false;
doc.Range.Replace(regex, "*", options);
Console.WriteLine(doc.GetText());
 // The output is: D*l*t*d\rT*xt\f
Use Case 2. Explains how to ignore text inside insert revisions:

.NET

// Create new document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert text with tracking revisions.
doc.StartTrackRevisions("author", DateTime.Now);
builder.Writeln("Inserted");
doc.StopTrackRevisions();

// Insert non-revised text.
builder.Write("Text");
Regex regex = new Regex("e");
FindReplaceOptions options = new FindReplaceOptions();

// Replace 'e' in document ignoring inserted text.
options.IgnoreInserted = true;
doc.Range.Replace(regex, "*", options);
Console.WriteLine(doc.GetText());
 // The output is: Inserted\rT*xt\f

// Replace 'e' in document NOT ignoring inserted text.
options.IgnoreInserted = false;
doc.Range.Replace(regex, "*", options);
Console.WriteLine(doc.GetText());
 // The output is: Ins*rt*d\rT*xt\f
Use Case 3. Explains how to ignore text inside fields:

.NET

// Create document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert field with text inside.
builder.InsertField("INCLUDETEXT", "Text in field");
Regex regex = new Regex("e");
FindReplaceOptions options = new FindReplaceOptions();

// Replace 'e' in document ignoring text inside field.
options.IgnoreFields = true;
doc.Range.Replace(regex, "*", options);
Console.WriteLine(doc.GetText());
 // The output is: \u0013INCLUDETEXT\u0014Text in field\u0015\f

// Replace 'e' in document NOT ignoring text inside field.
options.IgnoreFields = false;
doc.Range.Replace(regex, "*", options);
Console.WriteLine(doc.GetText());
 // The output is: \u0013INCLUDETEXT\u0014T*xt in fi*ld\u0015\f

Removed obsolete DigitalSignature.Certificate property and CertificateHolder.Create(X509Certificate2) method

Related issue: WORDSNET-19999.

The following obsolete property of DigitalSignature class was removed:

.NET

/// <summary>
/// Returns the certificate object that was used to sign the document.
/// </summary>
[Obsolete("This method is obsolete. Please use CertificateHolder.Certificate instead.")]
public X509CertificateSystem Certificate

Please use the following property instead: CertificateHolder.Certificate


The following obsolete method of CertificateHolder class was removed:

.NET

/// <summary>
/// Creates CertificateHolder object using already created <see cref="X509Certificate2"/>.
/// The given <see cref="X509Certificate2"/> must have private key.
/// This method is obsolete and will be removed in the future releases.
/// </summary>
/// <param name="certificate">X509Certificate2 which contains private key.</param>
/// <returns>An instance of CertificateHolder</returns>
[Obsolete("Used for the compatibility with the public API which contains X509Certificate2. X509Certificate2 must have Private key and have the X509KeyStorageFlags.Exportable flag set.")]
public static CertificateHolder Create(X509Certificate2 certificate)

Please use the following methods instead: CertificateHolder.Create(Byte[], SecureString) CertificateHolder.Create(Byte[], String) CertificateHolder.Create(String, String) CertificateHolder.Create(String, String, String)

Supported dynamic stretching of an image within textbox bounds preserving the ratio of the image for LINQ Reporting Engine

Issue: WORDSNET-18362

The “Inserting Images Dynamically” section of the engine’s documentation was updated to describe the change.