Just before Halloween, we released version 8.0.2 of your favorite open-source PDF library for Java and .NET. There’s nothing spooky about iText Core and the updated iText Suite add-ons in this release though! We have support for PDF/A-4 creation, improved digital signing, and simple yet customizable annotation flattening, and that's just talking about iText Core! Let’s take a closer look at what's new.
Release iText Core 8.0.2
Introducing PDF/A-4 support
First and foremost, we’ve extended iText Core’s support for the creation and validation of PDF/A compliant documents to include the latest PDF/A-4 standard. PDF/A-4 is based on the PDF 2.0 specification, unlike the previous PDF/A-3 standard which was based on PDF 1.7. This means it allows some of the new features of PDF 2.0, such as page-level output intents for accurate color interpretation, an updated Unicode version, and improvements to Tagged PDF.
Speaking of the PDF 2.0 specification, don’t forget that as of last April this is now available to all at no cost, thanks to a collaboration between the three leading PDF companies (including Apryse) and the PDF Association. Visit the the PDF Association website to learn more and download the ISO 32000-2 bundle.
The a ("Accessibility"), u ("Unicode") and b ("Basic") conformance levels in earlier variants of PDF/A have been replaced by two new profiles: e and f. The PDF/UA format now exists for Universal Accessibility, and Unicode is now a requirement in PDF/A-4 for text encoding rather than a specific conformance level. Therefore, the base PDF/A-4 specification replaces the b and u conformance levels.
You can find helpful examples showing how to create PDF/A-4 documents with both iText Core and pdfHTML on the Knowledge Base, along with more details on the PDF/A standards and what’s new for PDF/A-4. However, in short PDF/A-4e (Engineering) replaces the old PDF/E standard for technical documents, and supports Rich Media and 3D annotations, PDF/A-4f allows any type of file to be embedded, similar to PDF/A-3, and builds upon PDFs existing container format capabilities.
In addition, PDF/A-4 has better support for the archiving of fillable forms than PDF/A3, since non-static content is now allowed in the form of JavaScript. Therefore, information about interactive forms can be both stored and archived.
Plus, it simplifies the handling of digital signatures. Which leads us nicely into:
Improved digital signing and customizable appearances
We continue the digital signature revolution we introduced with iText Core version 8.0 with a significant improvement which allows signing to be performed in several steps, rather than as a single operation. This can be especially useful to facilitate concurrency and manage resources efficiently in batch operations. The new deferred signing API already allowed this to some degree, although it required users to manually implement IExternalSignatureContainer
themselves which is no longer necessary.
There’s also a nice improvement for the appearance of digital signatures. Now, the generation of the appearance of signature form fields is delegated to the layout module rather than being manually implemented in the PdfSignatureAppearance
class, enabling completely customizable appearances. This means the old layer-based approach is outdated, and has been deprecated. Check out this example for more details on customizing signature appearences.
In addition, with this release we’re introducing a new higher level API for signing with PAdES. We’re still working on the finer details so it’s not quite ready for prime-time yet. However, it’s fully-functional so you use it for testing, and get a sneak peak at how it simplifies the digital signing process. We’ve prepared an example demonstrating how the new high-level classes help with signing documents, along with more information on the various PAdES signing levels and profiles on our Knowledge Base.
Also, stay tuned for future releases to see further strides in digital signing convenience. We know digital signing is a major use case for iText, and our aim is to make it as simple as possible by providing more high-level abstractions that you can utilize. So, you won’t have to worry about specifications or implementation details, iText will handle all that for you.
High-level API for easy and customizable annotation flattening
There are some nice changes to annotation flattening, where we’ve implemented a high-level API to simplify and enable easy customization of annotation flattening. You can either tell iText to flatten all annotations with just two lines of code, or if you prefer you can define specific types of annotation to be flattened. The power is now at your fingertips.
Of course, we have prepared some examples demonstrating how it works. There’s an example showing the default flatten behavior, as well as one for flattening a list of annotations. However, we also demonstrate how the customizability options work through using custom methods.
Bug fixes and miscellaneous
There’s also some miscellaneous improvements and fixes for the layout module relating to table row and cell properties, as well as fixes for a potential infinite loop with tables. We’ve also fixed an issue where a maliciously crafted PDF with a huge number of pages and empty data structures could cause an out of memory error. Now iText will avoid such issues by more intelligently allocating memory for documents like this.
Release pdfCalligraph 4.0.2
pdfCalligraph is our iText Core add-on which provides advanced typography support when creating PDF documents, enabling you to expand your document workflow with accurate rendering for global languages and writing systems.
For this release of pdfCalligraph, the artifact names have been changed to reflect the new naming structure. In addition, since Bouncy Castle is a dependency for tests the .NET version has been updated to use the latest 2.2.1 version.
Note: Don't forget that aside from being a very useful add-on to iText Core by itself, you can also use pdfCalligraph in combination with pdfHTML
Release pdfHTML 5.0.2
pdfHTML is an iText Core add-on for Java and .NET to create PDF from HTML/XML (and associated CSS).
In this release, we’ve continued our work on pdfHTML’s advanced multicolumn support by supporting the CSS break-inside
, break-after
, and break-before
properties for column-count
.
There’s a significant improvement in the font selection algorithm for font families with several width classes, as pdfHTML will now consider all font names within a family, and choose the best matching one.
Another addition to our flex container support is the support for vertical flex-direction
pagination. For example, if you want to expand a flex container onto different pages if the content will not fit on a single page.
In other news, pdfHTML will now support SVG tags when using HtmlConverter#convertToElements
, and there's a fix for the incorrect vertical alignment of inline-block
elements in table cells.
Also, don’t forget we have an example of PDF/A-4 creation using pdfHTML if this is of interest to you.
Release pdfOCR 3.0.1
pdfOCR is our add-on for iText Core to perform OCR on documents and images.
For this release, the artifact names have been changed to reflect the new naming structure. In addition, since Bouncy Castle is a dependency for tests the .NET version has been updated to use the latest 2.2.1 version.
Release pdfOptimizer 3.0.1
pdfOptimizer is our iText Core add-on to reduce the file size of PDFs.
For this release the artifact names have been changed to reflect the new naming structure. In addition, since Bouncy Castle is a dependency for tests the .NET version has been updated to use the latest 2.2.1 version.
Release pdfSweep 4.0.1
pdfSweep is an iText Core add-on for Java and .NET to securely redact content from PDFs.
For this release, the artifact names have been changed to reflect the new naming structure. In addition, since Bouncy Castle is a dependency for tests the .NET version has been updated to use the latest 2.2.1 version.
Release pdfXFA 4.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.
This release fixes a bug which could result in a null pointer exception when flattening XFA, and also a fix where certain Arabic characters could be modified.
The artifact names have been changed to reflect the new naming structure. In addition, since Bouncy Castle is a dependency for tests the .NET version has been updated to use the latest 2.2.1 version.
See you for the next release!
As promised, our 8.0.3 release will see further improvements for digital signatures. We’ll also have some updates related to PDF/UA creation and validation, plus some other surprises.
Don’t forget, you can get a free 30-day trial of the entire iText Suite under the terms of our commercial license, which enables you to keep your intellectual property safe. Happy coding!