Aspose.Words for Java 22.3 Release Notes

Major Features

There are 91 improvements and fixes in this regular monthly release. The most notable are:

  • Added saving to PDF 2.0 and several other improvements in PDF output.
  • Improved DML chart axis scaling algorithm.
  • Saving progress notifications were extended for TXT format.
  • Improved table comparing algorithm.
  • Provided comments syntax in LINQ Reporting.

Full List of Issues Covering all Changes in this Release (Reported by Java Users)

Key Summary Category
WORDSJAVA-2600 XmlDataSourceCore fails to load child Node with the same name as the table plus an attribute. Bug
WORDSNET-23346 DOCX to PDF missing lines in the chart Bug
WORDSNET-21033 Document.Compare generates the incorrect output Bug
WORDSNET-20853 Two Table Rows Created with Insertion and Deletion Revisions after Comparing Word Documents Bug
WORDSNET-20439 Document.compare performs unexpected comparison Bug
WORDSNET-20449 Document.Compare generates incorrect revisions Bug
WORDSNET-20945 Document.Compare generates the incorrect output Bug
WORDSNET-23378 Content is missed upon rendering document. Bug
WORDSNET-21328 Charts rendered incorrect when converted to PDF Bug
WORDSNET-22827 Table row is pushed down to next page in output PDF Bug
WORDSNET-23410 IndexOutOfRangeException is thrown upon saving document to HTML Bug
WORDSNET-23278 Horizontal axis scaling is incorrect upon rendering chart Bug
WORDSNET-23427 Content in table cell is slightly overlaps border Bug
WORDSNET-18898 MODIFY_ANNOTATIONS incorrectly Allows Commenting, Filling of Form Fields and Signing in PDF Bug
WORDSNET-23484 Bookmark is pointing to wrong page after rendering to PDF Bug
WORDSNET-17379 SmartArt text is rotated in output PDF Bug
WORDSNET-16282 Document.Compare generates incorrect revisions for tables Bug
WORDSNET-19422 HTML to RTF conversion removes blank lines Bug

Full List of Issues Covering all Changes in this Release (Reported by .NET Users)

Key Summary Category
WORDSNET-5101 Support AES encryption algorithms New Feature
WORDSNET-14614 Improve TOC style and page numbers New Feature
WORDSNET-23250 Support PDF 2.0 version New Feature
WORDSNET-20128 Inconsistent behavior with dynamic columns and horizontal merge (portrait vs landscape) New Feature
WORDSNET-20127 Inconsistent behavior with dynamic columns and horizontal merge New Feature
WORDSNET-22891 Add loading progress notification for TXT documents New Feature
WORDSNET-23490 Provide comments syntax in LINQ Reporting New Feature
WORDSNET-23414 Preserve paragraph outline level upon importing tagged PDF document New Feature
WORDSNET-23264 Improve ConvertTabStops code during conversion from DOCX to fixed page format Enhancement
WORDSNET-18140 DML fill can not be retrieved and set correctly Bug
WORDSNET-23327 HTML markup becomes visible in a document loaded from AZW3 Bug
WORDSNET-18518 Table compare bug Bug
WORDSNET-19739 Incorrect scaling of the horizontal axis after converting to PDF Bug
WORDSNET-16918 Document.Compare generates the incorrect revisions Bug
WORDSNET-18188 Documents comparing gives incorrect revisions Bug
WORDSNET-9291 Incorrect SmartArt rendering in output PDF Bug
WORDSNET-20110 Bangla in Microsoft Equation does not render correctly in PDF Bug
WORDSNET-23196 Tables overlap after rendering document Bug
WORDSNET-20829 Table Rows being pushed to previous Pages in PDF Bug
WORDSNET-20830 Preserve empty page during Word DOCX to PDF Conversion Bug
WORDSNET-23328 A MOBI document cannot be loaded Bug
WORDSNET-23204 Incorrect text with black background after the conversion Bug
WORDSNET-23366 ImportFormatMode.KeepSourceFormatting behaves differently in AW and MS Word Bug
WORDSNET-23209 Revision.Accept fails for a specific document Bug
WORDSNET-21129 Compare Document functionality is not working as expected with tables Bug
WORDSNET-21918 Pie chart color is changed in output PDF Bug
WORDSNET-23221 Incorrect result of PdfFlateDecodeFilter Bug
WORDSNET-23227 Support xlink:href during import HTML with SVG image Bug
WORDSNET-22645 Text of Table cell is lost after HTML to DOCX conversion Bug
WORDSNET-22989 Document cannot be unprotected with correct password Bug
WORDSNET-20649 Document.Compare generates incorrect revision for table’s column Bug
WORDSNET-22671 Table and image are overlapped after DOCX to PDF conversion Bug
WORDSNET-23257 ODT to DOC: output is different from MS Word Bug
WORDSNET-23037 IndexOutOfRangeException at JBig2Decoder.JBIG2Bitmap.DuplicateRow Bug
WORDSNET-22830 Chart is not rendered correctly after DOCX to PDF conversion Bug
WORDSNET-23259 Consider keeping support of deprecated PDF-A1 Bug
WORDSNET-23398 MSG to PDF line spacing issue Bug
WORDSNET-20705 Word to PDF conversion issue with Phonetic Guides, resulting in misaligned text Bug
WORDSNET-23405 ArgumentException when Load document with SVG image Bug
WORDSNET-23407 “NC sync failed” occurs upon comparing Docx files with SDT Bug
WORDSNET-23417 NullReferenceException is thrown when comparing a document Bug
WORDSNET-23418 “Unexpected subdocument type” when saving to DOC Bug
WORDSNET-23373 FileCorruptedException when opening DOC Bug
WORDSNET-23191 KeyNotFoundException: Dictionary doesn’t contain “S” entry Bug
WORDSNET-23026 InvalidOperationException: Encrypt element in the trailer dictionary must also be dictionary Bug
WORDSNET-23283 StackOverflowException is thrown upon loading DOCX document. Bug
WORDSNET-23292 An error “Alternative description missing for an annotation” in PDF/UA document Bug
WORDSNET-23424 Text is incorrectly wrapped in table cell Bug
WORDSNET-23372 DOCX to RTF conversion throws an InvalidOperationException Bug
WORDSNET-23304 Aspose.Words hangs on document layout Bug
WORDSNET-23433 Resolving the ranged Sdt without Id Bug
WORDSNET-23436 Paragraphs indents (in character units) incorrectly calculated when Document Grid  is defined Bug
WORDSNET-23428 Range.Replace does not throw RegexMatchTimeoutException Bug
WORDSNET-23439 InvalidOperationException: ‘Linked list is in invalid state.’ upon saving document to HTML or rendering Bug
WORDSNET-23452 Unexpected text next to image after converting RTF to PDF Bug
WORDSNET-23460 ArgumentException: ‘Parameter is not valid.’ is thrown upon rendering document to XPS and FixedHtml Bug
WORDSNET-23472 NullReferenceException at GetBorders Bug
WORDSNET-23469 Issue with Document.ExtractPages(..) Bug
WORDSNET-23471 FileCorruptedException is thrown upon loading RTF document Bug
WORDSNET-23190 KeyNotFoundException: MediaBox was not present in the dictionary Bug
WORDSNET-23478 Some characters are retrieved incorrectly Bug
WORDSNET-23487 XmlException: ‘w16sdtdh’ is an undeclared prefix.  Is thrown upon opening DOCX produced by Aspose.Words Bug
WORDSNET-23492 FileFormatUtil.DetectFileFormat() detects some TIFF images as text Bug
WORDSNET-23488 Wrong table style is applied to a table after comparison Bug
WORDSNET-23497 Table is distorted on PDF import Bug
WORDSNET-23510 Arabic text inside table cells is too large Bug
WORDSNET-23516 List labels are displayed as question marks (0xF03F) after conversion from RTF to another formats Bug
WORDSNET-18696 Wrong detections of revisions (paragraphs marked deleted) Bug
WORDSNET-18703 Check the compare produces incorrect revisions Bug
WORDSNET-19048 Document.Compare produces incorrect revisions Bug
WORDSNET-16293 RTF Documents Comparison Issue with Table Cells Bug
WORDSNET-21501 Incorrect rendering of complex SVG image when  document save as PNG Bug
WORDSNET-23444 LayoutEnumerator does not work for textbox Bug

Public API and Backward Incompatible Changes

This section lists public API changes that were introduced in Aspose.Words 22.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 the existing behavior is especially important and is documented here.

Added saving to PDF 2.0 and several other improvements in PDF output

Related issue: WORDSNET-23250

  1. New value added to PdfCompliance enum
    public enum PdfCompliance
    {
        /// <summary>
        /// The output file will comply with the PDF 2.0 (ISO 32000-2) standard.
        /// </summary>
        Pdf20
    }
    
  2. Improvements in PDF digital signatures Changed PDF digital signature type from “adbe.pcks7.sha1” to “adbe.pcks7.detached” to fit all supported PDF versions. Added PdfDigitalSignatureHashAlgorithm.RipeMD160 value. PdfDigitalSignatureHashAlgorithm.Sha1 and PdfDigitalSignatureHashAlgorithm.Md5 values are marked as obsolete. Default value for PdfDigitalSignatureDetails.HashAlgorithm changed from PdfDigitalSignatureHashAlgorithm.Sha512 to PdfDigitalSignatureHashAlgorithm.Sha256. SHA256 is most popular hashing algorithm, it is strong enough and it is used by default by Adobe Acrobat when signing the document.
    public enum PdfDigitalSignatureHashAlgorithm
    {
        /// <summary>
        /// SHA-1 hash algorithm.
        /// </summary>
        [Obsolete("SHA-1 hash algorithm has been deprecated in latest PDF specification. Please, use the other hash algorithm instead.")]
        Sha1,
        /// <summary>
        /// MD5 hash algorithm.
        /// </summary>
        [Obsolete("MD5 hash algorithm has been deprecated in latest PDF specification. Please, use the other hash algorithm instead.")]
        Md5,
        /// <summary>
        /// RIPEMD-160 hash algorithm.
        /// </summary>
        RipeMD160,
    }
     
    public class PdfDigitalSignatureDetails
    {
        /// <summary>
        /// Gets or sets the hash algorithm.
        /// </summary>
        /// <remarks>The default value is the SHA-256 algorithm.</remarks>
        public PdfDigitalSignatureHashAlgorithm HashAlgorithm { get; set; }        
    }
    
  3. Improvements in PDF encryption Removed PdfEncryptionAlgorithm enum and encryptionAlgorithm parameter from PdfEncryptionDetails constructor. This is a breaking change. Now PDF 1.7 output is encrypted with AES-128 encryption algorithm and PDF 2.0 output with AES-256 algorithm. Updated XML comments on PdfPermissions to fit current algorithms.
    public class PdfSaveOptions
    {
        /// <summary>
        /// Gets or sets the details for encrypting the output PDF document.
        /// </summary>
        /// <remarks>
        /// <para>The default value is null and the output document will not be encrypted.
        /// When this property is set to a valid <see cref="PdfEncryptionDetails"/> object,
        /// then the output PDF document will be encrypted.</para>
        /// <para>AES-128 encryption algorithm is used when saving to PDF 1.7 based compliance (including PDF/UA-1).
        /// AES-256 encryption algorithm is used when saving to PDF 2.0 based compliance.</para>
        /// <para>Encryption is prohibited by PDF/A compliance. This option will be ignored when saving to PDF/A.</para>
        /// <para><see cref="PdfPermissions.ContentCopyForAccessibility"/> permission is required by PDF/UA compliance
        /// if the output document is encrypted. This permission will automatically used when saving to PDF/UA.</para>
        /// <para><see cref="PdfPermissions.ContentCopyForAccessibility"/> permission is deprecated in PDF 2.0 format.
        /// This permission will be ignored when saving to PDF 2.0.</para>
        /// </remarks>
        public PdfEncryptionDetails EncryptionDetails { get; set; }
    }
     
    public class PdfEncryptionDetails
    {
        /// <summary>
        /// Initializes an instance of this class.
        /// </summary>
        public PdfEncryptionDetails(string userPassword, string ownerPassword);
    }
     
    public enum PdfPermissions
    {
        /// <summary>
        /// Disallows all operations on the PDF document.
        /// This is the default value.
        /// </summary>
        DisallowAll,
        /// <summary>
        /// Allows all operations on the PDF document.
        /// </summary>
        AllowAll,
        /// <summary>
        /// Copy or otherwise extract text and graphics from the document by operations other than that controlled
        /// by <see cref="ContentCopyForAccessibility"/>.
        /// </summary>
        ContentCopy,
        /// <summary>
        /// Extract text and graphics (in support of accessibility to users with disabilities or for other purposes).
        /// </summary>
        ContentCopyForAccessibility,
        /// <summary>
        /// Modify the contents of the document by operations other than those controlled by
        /// <see cref="ModifyAnnotations"/>, <see cref="FillIn"/>, and <see cref="DocumentAssembly"/>.
        /// </summary>
        ModifyContents,
        /// <summary>
        /// Add or modify text annotations, fill in interactive form fields, and, if <see cref="ModifyContents"/> is
        /// also set, create or modify interactive form fields (including signature fields).
        /// </summary>
        ModifyAnnotations,
        /// <summary>
        /// Fill in existing interactive form fields (including signature fields), even if <see cref="ModifyContents"/>
        /// is clear.
        /// </summary>
        FillIn,
        /// <summary>
        /// Assemble the document (insert, rotate, or delete pages and create document outline items or thumbnail
        /// images), even if <see cref="ModifyContents"/> is clear.
        /// </summary>
        DocumentAssembly,
        /// <summary>
        /// Print the document (possibly not at the highest quality level, depending on whether
        /// <see cref="HighResolutionPrinting"/> is also set).
        /// </summary>
        Printing,
        /// <summary>
        /// Print the document to a representation from which a faithful digital copy of the PDF content could be
        /// generated, based on an implementation-dependent algorithm. When this flag is clear (and
        /// <see cref="Printing"/> is set), printing shall be limited to a low-level representation of the appearance,
        /// possibly of degraded quality.
        /// </summary>
        HighResolutionPrinting
    }
    
  4. Several options in PdfSaveOptions cannot be used when saving PDF 2.0
    public class PdfSaveOptions
    {
        /// <summary>
        /// Gets or sets a value determining whether or not to substitute TrueType fonts Arial, Times New Roman,
        /// Courier New and Symbol with core PDF Type 1 fonts.
        /// </summary>
        /// <remarks>
        ...
        /// <para>Core fonts are not supported when saving to PDF 2.0 format. <c>false</c> value will be used
        /// automatically when saving to PDF 2.0.</para>
        ...
        /// </remarks>
        public bool UseCoreFonts { get; set; }
     
        /// <summary>
        /// Gets or sets a value determining the way <see cref="Document.CustomDocumentProperties"/> are exported to PDF file.
        /// </summary>
        /// <remarks>
        ...
        /// <para><see cref="PdfCustomPropertiesExport.Standard"/> value is not supported when saving to PDF 2.0.
        /// <see cref="PdfCustomPropertiesExport.Metadata"/> will be used instead.
        /// </para>
        /// </remarks>
        public PdfCustomPropertiesExport CustomPropertiesExport { get; set; }
    }
    
  5. Changes related to obsolete PdfCompliance enum values:
  • Removed obsolete PdfCompliance.Pdf15
  • Removed Obsolete attribute from PdfCompliance.PdfA1b and PdfCompliance.PdfA1a