Spring is a time for new beginnings, and the same is true for this quarterly release of the iText PDF SDK. And not just because this is the first release under the Apryse banner!
As we teased last time, this release of the open-source iText Core PDF library and the add-ons which make up the iText Suite brings big changes to our SDK. Seven years after the first release of version 7 of the iText PDF library, we’re proud to announce the release of iText Core version 8.0.0 – aka iText 8.
What's new for iText 8?
When we released iText Core version 7.0.0 way back in 2016, we had gone back to the drawing board to rebuild iText from scratch. After continuously developing iText through various iterations (iText 2/5 and the .NET variant iTextSharp), and adding the features developers and our customers wanted, things were getting a little unwieldy. Being a monolithic library, iText 5’s codebase had grown significantly as we’d bolted features onto it.
Thus, iText 7 was born as a leaner, more modular library where developers could decide which features they needed and only load those modules. If you don’t need forms or SVG functionality there’s no need to load the forms
and svg
modules, saving precious memory and initialization time.
At the same time, the modular approach allowed us to extend iText’s functionality with specialized add-ons, such as for secure redaction, complex language rendering, and using HTML/XML as templates for creating PDF. We’ve continued to develop new add-ons as part of the iText Suite to meet our customer’s needs and requirements.
iText version 8 is a further evolution of this thinking, and we’ve rewritten and refined the core library to meet the needs of modern document processing. While version 7 was designed around the then upcoming PDF 2.0 specification, iText Core 8.0.0 introduces a number of new features and support for the latest cryptographic related extensions to PDF 2.0.
Let’s take a more detailed look at what’s new.
iText Core release 8.0.0
Support for new digital signature standards
In particular, support has been added for SHA-3 hash functions as specified in ISO/TS 32001, and from ISO/TS 32002 modern elliptical curves for digital signatures are also supported. While these extensions are very new, we believe that it's important for open-source projects such as iText to support and popularize such standards early - especially as we are involved with both the PDF Association and the ISO committees responsible for their publication.
FIPS support as standard
Direct support for the Java and .NET Bouncy Castle FIPS APIs has been added to iText Core, for compliance with the Federal Information Processing Standard (FIPS 140-2) – the benchmark for evaluating cryptographic products. While FIPS 140-2 is a U.S./Canadian Federal standard, it is widely adopted by both governmental and non-governmental sectors worldwide for practical security and realistic best practice.
For .NET users, please note that FIPS support works in .NET Core, but due to a limitation, .NET Framework is not currently supported.
We have a code example for using FIPS in the approved mode with the SHA3-512 algorithm, or you can see the Bouncy Castle changes page for more details on using our FIPS implementation.
Other digital signing changes
Significant improvements have been made to the sign
module in order to both support new features (such as the RSASSA-PSS padding scheme specified by ETSI as the preferred method for PAdES), and to make the process of digital signing easier.
Improved forms creation
Big improvements have also been made to the forms
module. When creating forms, you can now benefit from a more logical layout-based approach – just like the one you’ve come to love when creating PDFs with iText! You can simply create layout elements for form fields and add them to the Document
object, as you would usually do for other layout elements such as Paragraph
, Table
, Div
, etc. This will greatly aid forms creation and maintenance.
Again, we have a helpful code example showing how this works, or you can check the Forms module changes page for more details.
What else is new?
We have a rather nice improvement for text extraction from PDFs containing non-identity CMaps (such as UniJIS-UCS2-H) that contain double mappings. This change enables reliable Unicode extraction regardless of the source encoding of the CMap in the document.
Special mention should be made to the new and improved Java and .NET layout module documentation which can be found in our GitHub repository.
There’s also plenty of general API improvements and refinements, which you can find more information on in the release notes and API documentation.
Along with the release of iText Core, we’ve also updated some of the add-ons in the iText Suite:
pdfCalligraph 4.0.0
pdfCalligraph is our iText Core add-on which provides advanced typography support when creating PDF documents. It enables you to expand your document workflow with accurate rendering for global languages and writing systems.
For release 4.0.0 of pdfCalligraph, we've updated the version of our com.ibm.icu.icu4j
dependency, Otherwise, this release is for compatibility with the iText Core version 8.x.x release
pdfHTML 5.0.0
pdfHTML is an iText Core add-on to create PDF from HTML/XML (and associated CSS).
New for pdfHTML 5.0.0 is support for the text-decoration-color
CSS property to affect the appearance of nested elements. This CSS property sets the color of text decorations added by the text-decoration-line
property.
pdfOCR 3.0.0
pdfOCR is our add-on for iText Core to perform OCR on documents and images.
For this release, we resolved an incompatibility issue when using JDK19 and the Leptonica library which could result in an exception. Otherwise, this release is for compatibility with the iText Core version 8.x.x release.
pdfOptimizer 3.0.0
pdfOptimizer is our iText Core add-on to reduce the file size of PDFs.
While there are no new changes for this version, this release is for compatibility with the iText Core version 8.x.x release.
pdfSweep 4.0.0
pdfSweep is an iText Core add-on for Java and .NET to securely redact content from PDFs.
While there are no new changes for this version, this release is for compatibility with the iText Core version 8.x.x release.
pdfXFA 4.0.0
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.
This release fixes a couple of flattening issues related to table cells, and one where content was drawn outside of the page area.
Contributions and pull requests
Before we wrap up, we’d like to thank the iText Community as always for their contributions to this release. In particular, huge thanks go to MatthiasValvekens for submitting the pull requests for RSASSA-PSS and the ISO/TS 32001 and ISO/TS 32002 extensions. Keep an eye out for a couple of guest blogs coming from Matthias talking about these topics soon!
If you’d like to contribute to the development of iText, please feel free to head over to our Java and .NET repos on GitHub.
Conclusion
Our aim for this release was to create a great platform for future development, and to maintain iText's reputation as the most performant and most developer friendly Java and .NET library for PDF creation (including PDF/A and PDF/UA), digitally signing PDFs, and much more besides!
With the support for the latest PDF digital signing standards, FIPS compliance, improved forms creation, and much more, we believe iText Core version 8 represents a big leap over previous iText versions.
Until next time, happy coding!
Learn What’s Great About iText 8
Better than ever at digital signing & document creation!
Our first release as part of the Apryse family is also our biggest and most significant release since iText 7 in 2016. Version 8 of the iText Suite PDF SDK packs a ton of new features and API improvements across the board. Our webinar exploring what makes iText 8 the new go-to solution for digital signing, document creation, and much more, is now on YouTube. So, if you missed it, click the link below!