github itext/itext-java 9.1.0
iText Core/Community 9.1.0

8 days ago

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

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 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.

To top it off we’ve significantly improved the SVG module’s usage of the advanced typography features enabled by the pdfCalligraph add-on. See the example PDF on our Knowledge Base for a demonstration!

Increased Table Performance

With iText Core 9.1 the table rendering code has been highly-optimized, particularly when it comes to tagged tables. This is especially noticable for tables with many rows, or when tagging tables. See more details

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

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. In particular, we have a new chapter to our Digital Signing with iText series. In Part V, we take you through the steps of signing PDFs with Java via a remote signing service offering CSC API access.

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

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.

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

  • 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

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

Don't miss a new itext-java release

NewReleases is sending notifications on new releases.