A short while ago, the Bouncy Castle Crypto API was upgraded from 1.46 to 1.47. This upgrade was a major one: we had to change all the iText code related to digital signatures. We took a couple of months to test this new code and during this time, we found and fixed many migration problems; we hope we caught them all. While we were at it, we decided to completely reengineer the way iText digitally signs a PDF document.
For the sake of clarity, all signing code was moved to a separate security package, and we've split up large classes into smaller helper classes.
We removed all of the traditional ("non detached") ways of signing, some of which will be deprecated as soon as the PDF 2.0 specification is released. From now on, you can only use detached signatures (which is recommended), both CMS as well as CADES style. In other words: on top of support for PAdES 2 and 4, we now also have full support for PAdES 3.
Signing a message digest outside iText (for instance using a smart card) is now a no-brainer thanks to the ExternalSignature interface.
The result of all these changes, is that you'll have to update your code if you're using the digital signature functionality. However: you'll discover that the new interface is much more straight-forward and easier to use.
It goes without saying that we also improved other features:
- PdfSmartCopy now does a better job avoiding redundant objects when concatenating PDFs;
- the image class is now smarter in retrieving the resolution of images;
- we added a check to avoid the creation of pages that have a larger size than allowed according to ISO-32000-1.
Note that we deprecated HTMLWorker in favor of XML Worker. XML Worker does a really job job at converting XHTML to PDF (see below), so there's really no reason to continue using HTMLWorker.
As usual we've fixed some bugs that were introduced in previous versions:
- there were some problems with PDFs with huge file sizes;
- the CJK changes broke the VerticalText functionality,
- finally we applied plenty of small enhancements and fixed several minor bugs in ColumnText (and related classes such as PdfLine).
Most important news: the dependency on BouncyCastle has changed (from 1.46 to 1.47); you'll need to rewrite your digital signing code.
It was high time to create a version of RUPS using the latest iText version, and we had a good reason to do it now. Reading PDF syntax is heard, so we're now using colors to indicate the nature of the syntax: graphics state, text state, operators, operands,... They can now easily be recognized because they now have a different color.
XML Worker is getting really cool. We fixed the 'disappearing spaces' problem, we fixed some problems with tables (table cell spacing, double borders, list items inside tables), and we added support for div-tags with relative positions and float-layout.