
After the barnstorming 25th anniversary release of iText Suite 9.1, you might not be expecting much for this follow up. However, iText Suite 9.2 has quite a few things to shout about, with .NET MAUI AOT compilation support and automated validation for PDF/UA-2 documents in iText Core. Plus, we’ve some nice improvements for the pdfCalligraph, pdfHTML, and pdfOptimizer add-ons.
Let’s dive in and look at these in more detail, and make sure to read to the end for an extra-special surprise for fans of large, non-venomous constrictors snake-based programming languages!
Release iText Core 9.2.0
.NET MAUI AOT Compilation
The primary thing for this iText Core release is support for Native Ahead-of-time (AOT) compilation in .NET MAUI development. After implementing support for GraalVM Native Image compilation on the Java side last year, we wanted our community of .NET developers to reap similar benefits. With the addition of the NativeAOT runtime for iOS and macOS development to .NET 9’s Multi-platform App UI (MAUI) this opens the door to significant benefits for iText developers.
Aside from the usual benefits of producing optimized native executables: smaller file size, fast startup, and reduced memory usage, AOT compilation is especially useful when building for iOS. This is because traditional Just in Time (JIT) compilation is heavily restricted for App Store apps, so developing with MAUI’s AOT runtime could be a game changer.
Automated PDF/UA-2 Validation
We added automated checks for PDF/UA-1 creation with the release of iText Core 8.0.4, and have now extended them to include the new PDF/UA-2 standard published last year.
While the previous checks were taken directly from the PDF Association’s Matterhorn Protocol PDF/UA conformance testing model, the PDF/UA-2 checks are based on the profile used by the industry-standard veraPDF validation tool. However, the general implementation of checkpoints and failure conditions are similar, and so iText Core will validate the PDFs you generate conform to the extended requirements of the new standard for universal accessibility.
While there is no legislation that mandates use of PDF/UA-2 over the existing PDF/UA-1 standard, there are certain advantages of targeting the latest and greatest – particularly in the case of PDF 2.0 documents. PDF/UA-2 features support for modern Unicode, along with the new document structure elements, such as Title
, DocumentFragment
, Aside
, FENote
, and Artifact
, which PDF 2.0 introduced.
In addition, we have refactored the conformance-checking mechanism by introducing the new PdfConformance
abstraction to support multiple standards (e.g. PDF/A, PDF/UA), with PdfAConformance
and PdfUAConformance
now existing as enums, enabling modular, extensible validation.
More information on the implementation can be found in the Core release notes.
Release pdfCalligraph 5.0.2
Finer Control of Typographic Features
This release of the pdfCalligraph add-on for iText Core adds a small, but useful feature. Since pdfCalligraph was designed to enable advanced typography features in PDF in a transparent way as possible, it works in the following way. If you have 1) the licensed pdfCalligraph typography module loaded, and 2) are writing text to a PDF using an OpenType font, then iText will apply the advanced OpenType features “automagically”. It’s important to note that this does not only apply when using advanced scripts or writing systems but will also apply to standard “Latin” scripts.
At first glance this may seem strange, though there are certain times when you need OpenType’s advanced typography features to accurately render text. For example, OpenType allows things like discretionary and contextual ligatures, which adjust based on the surrounding text. It also supports swashes and more advanced kerning adjustments, important for when you need text in documents to look absolutely correct.
On the other hand, it’s relatively uncommon for most people to need pdfCalligraph’s advanced typography for standard scripts. So, for the best of both worlds, we’ve added a switch to easily control when and where these OpenType features are applied within a document.
Release pdfHTML 6.2.0
More Convenient PDF/UA Creation
Our main goal for this release of pdfHTML was to improve the way it handles conversion from HTML to the PDF/UA standards for universal accessibility. You might recall an article were we demonstrated how some of the advancements in iText Core and pdfHTML’s APIs make creating archivable PDF/A documents from HTML far easier than it was with iText 5. We’ve now adapted pdfHTML’s API to allow seamless HTML conversion to both PDF/UA-1 and PDF/UA-2 conformant documents in just a single step.
To make it as simple to use as possible, there is a high-level switch for PDF/UA support on the ConverterProperties
Object. You simply specify which version of the PDF/UA standard you’re targeting and let iText Core and pdfHTML handle all the tricky stuff for you behind the scenes!
Of course, we’ve prepared a code example for you on the iText Knowledge Base, so check it out on the release page linked above.
CSS and SVG Improvements
Following on from the CSS additions in the previous iText release, we’ve now added support for the align-content
property to pdfHTML’s existing Flexbox support. Supported values are normal
, content-distribution
and content-position
, and you can expect further support for advanced flex properties coming down the line.
Another important change for this release is in the conversion of <svg>
tags for PDF/UA. When targeting conformance with the PDF/UA standard, it requires an alternative description to be set. While SVG does not support <alt>
tags, it does have the <desc>
element to provide accessible, long-text descriptions of SVG containers or graphics elements. Now, pdfHTML will handle this translation for you.
Those are the major changes for this release, but you can find more information on what’s new and details of bug fixes on the release page.
Release pdfOCR 4.0.2
pdfOCR is our add-on for iText Core to perform OCR on documents and images.
There are no feature changes for this release. The only changes are to maintain compatibility with the iText Core 9.2.0 dependencies.
Release pdfOptimizer 4.0.2
The pdfOptimizer add-on provides variable ways to optimize PDFs, whether you’re generating them with iText or rewriting them after processing.
One of these ways is detecting duplicated XObjects within PDF streams, such as images. The PDF specification allows that if an image is reused multiple times in a document – such as in headers and footers – only one instance of the image needs to be stored. For this release, we’ve improved how such duplicate images are detected, enabling a significant file size reduction in certain cases.
We've also resolved a bug in pdfOptimizer's font subsetting optimization. Font subsetting is a feature where unused glyphs can be removed from embedded font streams, which can help to reduce file sizes. However, a customer reported an issue where pdfOptimizer would remove additional data when it encountered certain malformed content streams that it was unable to process correctly. Now, even when pdfOptimizer cannot process such streams for optimization, the original data will be preserved.
Release pdfSweep 5.0.2
The pdfSweep add-on is another open-source add-on for iText Core, which enables you to securely redact content from PDFs. This is essential when you need to completely remove confidential or sensitive information from documents.
This release is mainly to maintain compatibility with the iText Core 9.2.0 dependencies.
Release pdfXFA 5.0.2
pdfXFA is an iText Core add-on for Java and C# (.NET) that allows you to flatten dynamic XFA forms to static PDF. It also enables you to add a digital signature to converted XFA forms as additional security for further processing in PDF workflows or for archiving.
There are no feature changes for this release. The only changes are to maintain compatibility with the iText Core 9.2.0 dependencies.
Pull Requests
We’d like to thank Aviad Pineles for their PR to improve CSS style sheet logic for pdfHTML. While we eventually went with a different implementation of this fix, we’re very grateful for the inspiration!
As always, head over to our GitHub if you’d like to contribute to iText’s continuing development. Let’s aim for another 25 years of open-source goodness!
Bug Fixes and Miscellaneous Improvements
Related to our work on the PDF/UA-2 checks and the improved API for HTML to PDF/UA, there are some improvements and fixes relating to PDF 2.0 conformance. We've introduced a special checker for tag structure based on the parent-child tag relationships defined in the PDF 2.0 specification and resolved some issues in PDF 2.0 tag conversion and structure repair operations.
One additional thing we'd like to draw attention to is that in response to a bug report on StackOverflow, we tracked down and fixed a line wrap issue for non-wrapping italic/bold simulated text in table columns. This could result in an erroneous page break when the content width overflowed the column.
For more details on other improvements and bug fixes, see the release notes for Core and the add-ons on the Knowledge Base.
Don't forget, the release notes contain links to our Java and .NET GitHub repositories which are continually updated with useful code samples for iText Core and its add-ons.
Showcase PDF
As in previous releases, we’ve made the Core release notes into a showcase PDF document. This time we’re utilizing the new HTML to PDF/UA API to produce a fully-accessible, digitally signed document which conforms to the PDF/UA-2 standard. See the file attached to the release notes for more information.
The other main difference is it’s been generated and digitally signed with Python, but we’ll explain more about how that’s possible later...
Note that certain viewers may not display this PDF correctly as we're using some pretty advanced features. For example, some viewers do not show all of the PDF 2.0 metadata, and even Acrobat does not yet recognize PDF/UA-2 as such.
However, you can confirm its conformance with the PDF/UA-2 standard by running it through the veraPDF validation tool.
The Benefits of Dogfooding
Due to our recent experimentations with WTPDF/PDF/UA-2 conformance for our release notes PDF, we discovered an issue relating to handling of multiple link annotations which target the same location. As this rule was not in veraPDF's checks we contacted the veraPDF team to resolve the issue, so our automated checks would also cover such cases.
This shows a handy side effect of "eating our own dogfood" to produce these release notes PDFs. Aside from simply demonstrating new or improved iText capabilities, we can also uncover uncommon issues or edge cases which we may not otherwise encounter. This is especially useful for testing implementations new standards like WTPDF/PDF/UA-2, where bleeding edge implementations like iText's can identify and resolve issues as early as possible.
New Technical Tales Article
As mentioned in our previous blog, we launched a new section on the Knowledge Base for iText’s in-house developers and other technical people: Technical Tales.
One of the newest articles takes a closer look at the huge improvement in table rendering performance from February's release of iText Core 9.1.0. Written by Guust Ysebie from the iText SDK development team, it takes you through his investigations into exactly what was causing the bottlenecks in performance, and how he solved it.
As you can see from the picture below, Guust likes making things go fast – whether that's iText's layout engine or his brand new motorbike.

This article is called How I Made PDF Table Rendering 95% Faster in an Afternoon. If you're interested in how iText's table rendering works, or optimization in general, it's a great read!
Get Started with iText Suite 9.2
If you’re completely new to iText, we highly recommend our free 30-day trial. This lets you try out the entire iText Suite: so not just iText Core, but also all our open and closed source add-ons, completely free.
And because the trial is covered by the terms of our commercial license, you can be assured your intellectual property is safe. The AGPLv3 conditions do not apply to commercial license holders, so your code can remain closed-source if that is a concern for you.
And Now for Something Completely Different
Before we sign off for another quarter, we’ve got a special surprise. If you’re a Python fan – that is, the general-purpose programming language, rather than the British comedy troupe (although they’re not completely exclusive!) – you may have wondered to yourself “I say, Algy. Wouldn’t it be absolutely spiffing if iText was available for Python, what?” To which Algy would probably say “Don’t be a blithering idiot, Biggles” or perhaps “Stop that. You’re being silly.”
However, thanks to a clever little open-source package called Python.NET you can use .NET libraries (such as iText) directly from Python code. Aside from the obvious iText use cases (automated PDF generation etc.), there’s a whole smorgasbord of possibilities for things like machine learning integrations and data analysis reporting - where Python and the Python community excels.
We have an example repository full of ported code examples for PDF generation and manipulation, including PDF creation from HTML templates with pdfHTML and even using an LLM to generate a table of contents for existing PDFs.
You’ll also find nice little bonuses, such as pre-generated typing stubs to make IDE development easier. It all works surprisingly well, although we encountered an issue running iText Core 9.1.0 with .NET Core. You’ll find a patch to work around this limitation in the GitHub repo, or you can just use iText Core 9.2.0 to avoid the issue entirely.
Of course, we've also been eating our own dog food and so the showcase PDF document for this release was both generated and digitally signed with Python. Pretty neat, right?
Make sure you check out How to Use iText in Python Environments for more information, and details of what’s happening behind the scenes to make it all work.
As ever, happy coding!