Skip to main content
Skip table of contents

Release iText Core 9.1.0

We said the previous 9.0 release was extra-special, but 25th anniversary releases don’t come along every day! So, this time we've prepared an extra-extra-special PDF showcase to demonstrate the improved SVG capabilities, faster tables, along with a bunch of advanced iText features. The pdfHTML add-on was used to turn these release notes into a document conforming to the PDF/A-4f, PDF/UA-2, and WTPDF standards. You can see the SVG Text improvements and how it benefits pdfCalligraph, along with the major table and CSS enhancements.

As always, it features a dynamically generated table of contents and bookmarks, layers, SVG rendering, and automatic pagination using our Events engine.

We've also embedded the source code and required resources to recreate the document, along with a MAC-protected version of the document (use the password "itext" to open it), and digitally signed it with a National Identity Card too. You can even validate it using the included Java and C# code samples!

File Modified

PDF File release_notes_9.1.0-pkcs11-signed.pdf

Feb 17, 2025

PNG File Table speed comparisons.png

Feb 14, 2025

Release date: Feb 14th, 2025

To celebrate both iText’s 25th anniversary and Valentine’s Day, we bring you iText Core version 9.1.0. There’s a lot to love about this release, with a huge performance increase in table creation, massively extended SVG support, and further Digital Signing goodies.

That’s by no means all though, as we’re also releasing new add-on versions across the iText Suite PDF SDK.

Extended SVG Support

Many additions and enhancements have been made to our in-house implementation since it was introduced, with coverage of the specification steadily increasing to meet customer needs. This release sees our biggest leap yet with over 40 tickets being closed – full marks to our incredible dev team!

Newly added are support for text clipping paths, 'marker-mid' properties, text decoration, and passing markers from <g> elements to children. We’ve improved general font handling, while some other improvements to draw attention to are in the support for relative size attributes, text positioning, 'direction' properties, stroke opacity, and dash patterns.

There's also improved support for CSS-specific SVG, which you can find more details on in the pdfHTML release notes. However, we'll call out the improved support for different CSS origins in SVG and referencing external resources with the @importurl() rule.

We’ve significantly improved the SVG module’s usage of the advanced typography features enabled by the pdfCalligraph add-on. This, along with many other things is shown off in the release notes PDF.

Increased Table Performance

With iText Core 9.1 the table rendering code has been highly-optimized, particularly when it comes to tagged tables. If you look at the comparison graphs below, you can see there is a huge reduction in the time iText takes to create a table.

Table speed comparisons.png

Time taken to render tables is greatly reduced, especially as table size increases

Digital Signatures

We’re continually working on iText’s digital signing and validation capabilities to provide a unique breadth of support in the market. MAC integrity protection support is extended to support two-step signing. There’s also new code examples for signing with the Cloud Signing Consortium (CSC) API, which we recently wrote about in Part V of our Digital Signing with iText series. You can find these in the GitHub samples repositories linked below.

Alongside that, we’ve made some general improvements (if you know, you know) to signing and validation. In particular, the workaround for certificates where the pathLength parameter is set to 0 for the basicConstraints extension is no longer required.

PDF/UA-2

Our PDF/UA-2 implementation is improved, specifically, when using the Annot tag for content elements in PDF 2.0 documents. Don’t tell anyone, but our team is preparing further PDF/UA-2 goodies for our next release.

Pull Requests

For this release, we’d like to thank Stefan Bechtold for submitting a PR adding support for styling tables with nth-last pseudo class selectors. Thanks also to Artyom Skrobov for squashing a bug when decoding an empty PdfString, and finally Zuzu-Typ for fixes to the kernel PDF encryption constants documentation.

Bug Fixes and Miscellaneous

There’s an update for merge handling when remote and embedded go-to actions are present, and we resolved a customer issue related to decoding Xref streams with missing bytes.

Many bugs have been resolved for SVG rendering and CSS layout. In addition, general bugfixes have been made to font and text handling, form fields, signing and validation, and more.

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.

If you use iText for digital signing, you may be interested in the Digital Signatures Hub which contains a ton of useful resources and examples.

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

If you want to create ZUGFeRD/Factur-X-e-invoices with iText Core, we have both Java and .NET code samples available targeting the current ZUGFeRD/Factur-X specification. They demonstrate how to embed the XML invoice data and add the metadata required for conformance. Read this article to learn more about ZUGFeRD/Factur-X, and using these code samples to create EN 16931-compatible e-invoices.

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 9.1 Releases

Release Related Examples

Downloads

Changelog

New features

  • Implement Text - Advanced Fonts

  • SVG Text text-decoration

  • Clipping paths on text

  • Support ‘marker-mid’ property

  • Support underlined text, dashed lines

  • Pass markers from <g> element to its children

  • Support display none and visibility hidden (except text)

Improvements

  • Table performance improvements

  • Typography usage in SVG

  • Support relative sized SVG in img and object HTML elements

  • Support ‘direction’ property

  • Text position improvements

  • Add default fonts to BasicFontProvider for SVG

  • Check childLength calculations with several fonts

  • Text Whitespace handling

  • Support stroke dash pattern in layout for text elements

  • Support MAC integrity protection in two step signing

  • OCSP verifier support alternate CertID representations

  • Provide injecting of http, ocsp and crl clients in validation chain

  • Re-evaluate Basic constraints handling of pathLenConstraint

  • Improve documentation for FontProvider.addFont methods

  • PdfFontFactory.registerDirectory recursive search

  • Add support for multiple parents in PdfLayer

  • Inconsitent id when creating formFieldElements

  • Make EventManager thread-safe

  • Update verapdf to the latest version

Bug fixes

  • BIDI is not correct when converting SVG

  • <polygon>: tops of figures are cut

  • Fix percent width&height resolving of top level SVG when it is used from html

  • Improve relative values support

  • Support color related style attribute and values for SVG image

  • Division by zero in AbstractBranchSvgNodeRenderer#calculateAndApplyViewBox results in NPE at

  • PdfFormXObject#calculateBBoxMultipliedByMatrix level

  • SVG transformation matrix applied incorrectly

  • Improve viewBox applying for AbstractBranchSvgNodeRenderer

  • Get rid of unexpected deformation when rotating a marker with preserveAspectRatio="none"

  • Wrong displaying of svg if invalid url attribute for fill property set

  • Rounded rectangle with rx or ry negative displayed incorrectly

  • Incorrect display of ellipse with absent Rx, Ry

  • SVG, SXP: transformations with invalid arguments cause NPE

  • addAnnotation method doesn't annotate content elements with Annot tag when PDF version is 2.0

  • Renderer splitup issue

  • Flex container with table splitup issue

  • Error decoding stream with FlateDecodeFilter and DecodeParams

  • Timestamp signature validation fails over encapMessageContent

  • Set print flag to the newly created signature field in PdfSigner

  • Default font size is calculated incorrectly for rotated form fields

  • Fix explicit destination handling in case of Remote go-to and Embedded go-to actions

Deprecation of Older iText Versions

We're taking this opportunity to announce End of Life dates for deprecated iText versions. EOL for iText 7.1 will be April 2025, and iText 7.2 will be October 2025. As for iText 8.0, this will reach EOL in October 2026.

EOL for these versions means they will transition to maintenance mode, and only receive security patches. However, just as with iText 5 we will continue to provide support for our customers. Even though iText 5 has been in maintenance mode since 2016, we regularly release new versions to address CVEs and other security-related bugfixes. See CVEs or the iText 5-specific CVEs page for more information.

Contributors

We’d like to shout out the following contributors for this anniversary release:

  • Core team

    • Eugene Bochilo

    • Dmitry Chubrick

    • Angelina Pavlovets

    • Alexandr Pliushchou

    • Vitali Prudnikovich

    • Dmitry Radchuk

    • Andrei Stryhelski

    • Nanou Persoons

    • Glenn Volckaert

    • Alexandr Fedorov

    • Guust Ysebie

    • Yulian Gaponenko

    • Raf Hens

  • Product / Marketing

    • André Lemos

    • Ian Morris

  • Infrastructure / Devops

    • Marco Andries

    • Yauheni Borbut

  • Research

    • Michael Demey

    • Vlad Lipskiy

  • Input from other teams

    • Rainer Plöckl

    • Alison Anderson

  • Input from outside

    • Michael Klink

    • Matthias Valvekens

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.