Skip to main content
Skip table of contents

Release iText Core 8.0.5

Release date: Jul 24, 2024

For our Q3 2024 release of your favorite open-source PDF library we’ve continued our work on refactoring the sign module, with further improvements to digital signatures thanks to a dedicated validation API.

The other big news is the addition of the CSS Grid Layout Module. Similar to the already supported Flexible Box Layout, it’s a powerful tool for controlling the sizing and positioning of boxes and their contents. However, while Flexbox is one-dimensional, Grid Layout is optimized for layouts where content alignment is desired in two dimensions.

We’ve also improved the handling of corrupted PDF documents, with more descriptive exception messages when iText encounters files with unreadable object streams, and other general improvements.

Let’s take a look at these changes in detail:

Digital Signatures

Built-in Signature Validation API

Eagle-eyed devs will have noticed we introduced a bunch of dedicated classes for the validation of digital signatures. We’ve been transferring and refactoring the existing validation logic into the validation.v1 package (Java/.NET) and adding additional classes for new functionality. The package will be renamed with the next major iText release, but the validation API itself is already completely functional, and available now for you to start using it.

In this release, we’ve added the SignatureValidator class, as well as the ValidationReport class. You can find information on their usage in the release-related examples below, and make sure to check out the Java and .NET signature validation examples which have been updated with this release.

Note that the OCSPVerifier class (Java/.NET) has been deprecated as of this release. You should now use the new, but similarly-named OCSPValidator (Java/.NET) instead.

Check out the API links above to see all the validation-related goodies in this release!

Support multiple CRL distribution points per certificate

Previously CrlClientOnline was only capable of retrieving a single url per certificate. This was incorrect since the CRL Distribution Points certificate extension can specify multiple distribution points and thus multiple urls. Now an instance can be created using a certificate chain to retrieve a CRL list of multiple urls to be further used as revocation data.

Document Revision Comparisons

Following on from the support for parsing document revisions in the previous release, we’ve introduced mechanisms to validate document revisions at the DocumentRevisionsValidator level, based on the DocMDP and FieldMDP standards. As explained in the EU Digital Signature Service (DSS) documentation, DocMDP “defines access and modification permissions granted for a PDF document using a certification signature”, while FieldMDP “defines permission issued for modifications within form fields (including signature fields).”

Grid Layout Support

While Grid Layout is mainly a feature for use with our pdfHTML add-on, the main Grid layout logic is located in the iText Core layout module. Because pdfHTML makes heavy use of the layout module in order to render HTML elements, it’s technically possible for layout module users to use this new feature directly for greater fine-tuning of documents.

However, since we imagine most people will be using pdfHTML for template conversion, this is the current focus of the API design. Feedback is always welcome though, so let us know if direct usage with Core is something of interest to you.

Better Handling of Broken PDFs

PDF viewers which are only concerned about representing the contents of PDF documents visually can be more lenient with documents with structural errors. However, since iText needs to read and manipulate PDFs at the lowest possible level (i.e., the actual “syntax”) while adhering to the PDF ISO specification, it cannot simply ignore such broken (or “corrupt”) PDFs. Errors in cross-reference (xref) tables are a common reason for corrupted PDF documents, and iText will now provide more detailed log information when xref tables need to be rebuilt.

In addition, if iText encounters circular references in xref tables which cannot be resolved, it will now throw a specific and more descriptive PdfException rather than a generic NullPointerException.

Pull Requests

A bumper release for pull requests this time round, with shoutouts going to p3p3pp3 for submitting a fix for the Deflate.cs code, and renlinch for a rewrite of the PdfHtmlHeaderAndFooter.java example. Finally, thanks go to our old friend MatthiasValvekens for a correction to XMP URI serialization in PDF/A and PDF/UA files.

Bug Fixes and Miscellaneous

For this release, we’ve reviewed how iText will attempt to resolve issues in documents and fixed some bugs where documents were modified without first taking into account the StrictnessLevel property.

We also made some updates to the code samples repositories. We added Signature Validation examples (Java/.NET), as well as updated our Two Phase Signing example (Java/.NET).

A discrepancy in the Java and .NET implementations of RSASSA-PSS support was found where the algorithm parameters for .NET were being ignored, leading to an incorrect signature. This is now fixed.

Finally, we upgraded our testing framework from JUnit 4 to JUnit 5, and adapted our automated tests.

Other Stuff

As always, you can see the Changelog below to see the full rundown on what’s new in Core, and details of other improvements and bugfixes for this release.

Don’t forget that in addition to the resources on our Knowledge Base, on our GitHub you can find a ton of useful up-to-date samples in the following repos:

Java

.NET

Bear in mind that our master branch contains samples for the current stable release, while the default develop branch is for the bleeding edge commits towards the next release.

Also, don’t forget to check out the release-related examples below, as well as the updated Core add-ons in the iText Suite we’ve released this time:

iText Suite 8.0.5 Releases

Release Related Examples

Downloads

Changelog

New features

  • Dedicated high-level validation API

  • Support multiple CRL distribution points per certificate

  • Support revision comparison according to DocMDP standard

  • Support revision comparison according to FieldMDP standard

Improvements

  • General improvements to handling and repair of broken or defective PDFs:

    • avoid NullPointerException in various situations

    • fix a StackOverflow when processing Tagged PDF

    • Layout.renderer: avoid Exception message Invalid grid-column/grid-row properties, cells overlapping and place overlapping cells instead.

    • Improvement of logging in repair mode of defective PDFs.

  • Added Java and C# Signature Validation examples, and updated Two Phase Signing example

Bug fixes

  • RSASSA-PSS parameters are ignored in .NET

eBooks

Installation Instructions

Examples (latest ones)

FAQ (latest ones)

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.