Skip to content

iText Core/Community 8.0.4

Compare
Choose a tag to compare
@guustysebie guustysebie released this 30 Apr 09:36
· 223 commits to develop since this release
8.0.4

It’s time for the second release of 2024 of your favorite open-source PDF library for Java and .NET. This time the big news for iText Core version 8.0.4 is GraalVM Native Image support. Our devs have been hard at work on this feature for a while, and it’s something we’ve been pretty excited about!

In addition, we have further improved our PDF/UA support with new APIs, automated checks, and implemented the IAccessibleElement layout element for form fields.

We've also enhanced iText's digital signature validation capabilities with improved OCSP logic, and the ability to parse document revisions.

GraalVM Native Image Support

As you can see on https://www.graalvm.org/native-image/libraries-and-frameworks/, the iText Core libraries are listed as tested with this technology.

If you’re not familiar with GraalVM Native Image, it is an ahead-of-time compilation technology - meaning that rather than running on a Java Virtual Machine, the code is compiled to a binary standalone executables. The neat thing about Native Image executables is they can offer several advantages over traditional JVM implementations:

  • Resource Efficiency: They are cheaper to run, since they use a fraction of the resources required by a Java Virtual Machine.

  • Fast Startup: Native Image executables start in milliseconds.

  • Immediate Peak Performance: They deliver peak performance immediately, with no warmup.

  • Efficient Deployment: Native executables can be packaged into lightweight container images for fast and efficient deployment.

  • Reduced Attack Surface: Since they only include the code required at runtime, native executables present a reduced attack surface.

GraalVM Native Image executables are ideal for containers and cloud deployments as they are small, start very quickly, and require significantly less CPU and memory. Furthermore, with profile-guided optimization, you can make GraalVM Native Image executables even faster.

As you can imagine, this opens up a world of possibilities for iText applications and we’re looking forward to seeing what you can do with it. So, if you develop anything cool, let us know!

Improved PDF/UA creation and checks

Following on from the general checks and helper logic for PDF/A and PDF/UA creation in the previous release, we’ve introduced some additional APIs for more user-friendly PDF/UA document creation - which you can see in action in our updated PDF/UA (Java/.NET) example. In addition, metadata for form fields can now be accessed and changed using the IAccessibleElement layout element.

Not only that, we’ve also implemented a host of helpful automated checks to assist developers when generating conformant PDF/UA-1 documents. The idea is to guide developers and alert them with more descriptive exceptions if iText detects any missing tags or incorrectly tagged content.

We’ve followed the guidelines set out in the Matterhorn Protocol document, and while it is not (yet!) possible to identify all failure conditions in software alone, the additional detail in these exceptions will be a great help for developers to track down and resolve such issues.

Digital Signature Validation

Improved OCSP Validation

We’ve continued our work on the sign module by improving the logic of the OCSPVerifier class (Java/.NET). This class allows you to verify a digital certificate against one or more Online Certificate Status Protocol responses, which is useful when you want to determine the status of a certificate without requiring Certificate Revocation Lists (CRLs).

Read and Roll Back Document Revisions

We’ve added some functionality in the kernel and sign modules which enable iText to parse and gather the revisions to a signed document, and roll back to a previous version if necessary.

Bug fixes and miscellaneous

We’ve improved the tagging for interactive form fields, and fixed a bug for list boxes where an infinite loop could result if the number of items exceeded what the page size would allow. In addition, there’s a couple of font-related fixes; one where the font changed after a special character, and one for not selecting an appropriate font if the character was neither first nor significant.

Other stuff

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.

New features

  • Introduce continuous GraalVM Native Image support
  • Additional PDF/UA creation APIs and checks
  • Implemented IAccessibleElement on form fields
  • Improve OCSPVerifier logic
  • Add functionality to parse different document revisions

Improvements

  • Correct tagging for interactive form fields
  • Update bouncy castle version to 1.78

Bug fixes

  • Fix ListBoxField infinite loop
  • Fix Font changing after special character
  • Fixed not selecting an appropriate font if the character is neither first nor significant
  • Tagged PDF: fix underline handling