We are pleased to announce the release of iText Core 9.8.0. This release introduces support for vertical text layout and CJK writing modes, radial gradients and SVG mask support, and advanced SVG stroke properties. In addition, we’ve introduced a higher-level transformation API with more user-friendly affine transform capabilities in the Layout module, enhanced footnote navigation, critical security updates across key cryptographic and utility dependencies, and substantial performance and standards-conformance improvements.
Vertical Text Layout & CJK Writing Modes
iText Core 9.8.0 introduces initial support for vertical writing modes in the Layout module, primarily aimed at CJK (Chinese, Japanese, and Korean) layouts. Whilst the implementation is not yet complete, the API has been finalized and supports line breaking, baseline adjustments, right-to-left vertical progression, accessibility tagging, and improved sizing behavior in tables, flex containers, inline blocks, and text renderers.
The current implementation also covers word and character spacing, text alignment, overflow handling, text decorations, and text-rise behavior, with related pdfHTML alignment for CSS vertical writing modes.
Layout, Rotations & Transformations
The Layout module now includes more user-friendly affine transformation capabilities, with simplified API options for Property.TRANSFORM. The release also resolves layout issues affecting rotated table cell sizing, content offsets, rotated page coordinates, and relative image positioning with borders.
Advanced SVG & Graphics Capabilities
This release expands SVG and graphics fidelity with radial gradient support across SVG, Kernel, and Layout, SVG support via PDF soft masks, advanced stroke properties such as stroke-linecap, stroke-linejoin, and stroke-miterlimit, URL-based stroke references with fallbacks, and fixes for nested clip paths with translations.
Coming soon: Markdown to PDF
Related to the SVG improvements, we’ve been working on providing Markdown-to-PDF conversion via GitHub Actions. It isn’t part of this release, but we’ll share more very soon.
Security and Stability
iText Core 9.8.0 includes important security and stability updates across cryptographic, JSON, HTTP, and logging dependencies, including IV generation fixes, Bouncy Castle FIPS, Bouncy Castle standard libraries, Jackson Databind, Apache HttpClient, and Logback. It also improves PDF/A and PDF/UA validation, text extraction performance, circular reference protection, digital signature revision validation, custom font link handling, font resource licensing clarity, and runtime compatibility for GraalVM JDK 24/25 environments.
Pull Requests
We’d like to thank Netliomax25 for their fix to improve CSS ~= attribute selector matching in pdfHTML and styled-xml-parser by properly escaping selector values before pattern matching.
Bug Fixes and Miscellaneous
Beyond the headline features, iText Core 9.8.0 includes a broad set of fixes and maintenance updates focused on performance, standards conformance, document stability, packaging quality, and developer experience.
-
Performance and resource handling: Restored Standard 14 font caching in text extraction to address a performance regression, added circular form XObject protection in canvas processing and cleanup workflows, and optimized conditional logging to avoid unnecessary string formatting when log levels are disabled.
-
PDF/A, PDF/UA, and validation improvements: Improved validation for PDF/A documents with multi-stream page contents and refined glyph validation for substituted glyphs without Unicode mappings.
-
Digital signing and document integrity: Corrected revision counting in digital signature validation to avoid over-counting document processing events and improve validation reliability.
-
Layout and rendering fixes: Fixed issues involving custom font links, relative image positioning with borders, rotated table cell sizing, footnote numbering with footer and page-break handling, and margin handling during relayout.
-
Packaging, runtime compatibility, and documentation: Improved GraalVM JDK 24/25 compatibility, and expanded public API documentation for the
iomodule. -
Compliance and dependency hygiene: Replaced legacy bundled font resources with clearly licensed equivalents, updated related notice information, and improved GraalVM WebP test stability.
Other Stuff
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
- https://github.com/itext/itext-publications-examples-java
- https://github.com/itext/itext-publications-book-java
- https://github.com/itext/itext-publications-signing-examples-java
- https://github.com/itext/itext-publications-signatures-java
- https://github.com/itext/itext-publications-highlevel-java
- https://github.com/itext/itext-publications-jumpstart-java
.NET
NOTE: 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.
New features
-
DEVSIX-9388, DEVSIX-10118, DEVSIX-10136, DEVSIX-10137, DEVSIX-10155, DEVSIX-10161, DEVSIX-10162, DEVSIX-10163, DEVSIX-10166, DEVSIX-10167, DEVSIX-10168, DEVSIX-10175, DEVSIX-10183, DEVSIX-10190 – Initial vertical text layout & CJK writing modes
-
DEVSIX-9377, DEVSIX-10102, DEVSIX-10150 – Higher-level affine transformations in the Layout module
-
DEVSIX-4396, DEVSIX-10037 – Radial gradient support across SVG, Kernel, and Layout
-
DEVSIX-2378 – Converting SVG elements into PDF soft masks
-
DEVSIX-10025, DEVSIX-10031 – Bi-directional clickable links between footnote anchors and bodies, with custom styling support for footnote anchors
Improvements
-
DEVSIX-2623, DEVSIX-10156, DEVSIX-10180 – Vertical text formatting, alignment, overflow, text-rise, and CJK font metrics
-
DEVSIX-2258, DEVSIX-4857, DEVSIX-10171 – SVG stroke properties, URL stroke references, and nested clip paths
-
DEVSIX-5334, DEVSIX-8934, DEVSIX-5029 – Rotated layout handling for table cells, offsets, and page coordinates
-
DEVSIX-10034, DEVSIX-10101 – Margin handling during document relayout
-
DEVSIX-10100 – Font resolution for footnote anchors
-
DEVSIX-10192, DEVSIX-10142, DEVSIX-10174, DEVSIX-10165, DEVSIX-10172, DEVSIX-10170, DEVSIX-10203, DEVSIX-10169, DEVSIX-9733, DEVSIX-6172 – Security updates for IV generation, Bouncy Castle, Jackson Databind, HttpClient, and Logback
-
DEVSIX-10113, DEVSIX-10092, DEVSIX-10026, DEVSIX-10179 – .NET 10 / GraalVM compatibility, and io API documentation
-
DEVSIX-9682, DEVSIX-9683 – Font compliance updates and notice file cleanup
-
DEVSIX-5525 – Conditional logging optimization to avoid unnecessary string formatting when log levels are disabled
Bug fixes
-
DEVSIX-10112 – Restoring Standard 14 font caching in text extraction
-
DEVSIX-3608 – Stack overflow protection for circular form XObjects
-
DEVSIX-10089 – Multi-stream PDF/A validation syntax boundary fix
-
DEVSIX-10160 – Substituted glyph validation via direct glyph-code lookup
-
DEVSIX-10177 – Signature revision count accounting
-
DEVSIX-10130 – Custom FontProvider handling on Link elements
-
DEVSIX-10019 – CSS ~= selector value escaping
-
DEVSIX-10094 – Footnote numbering with footer and page-break handling
-
DEVSIX-1022 – Relative image positioning with borders
Contributors
We’d like to shout out the following contributors for this release:
- Core team
- Product / Marketing
- Infrastructure / Devops
- Research
- Input from other teams
- Input from outside