Release iText 5.3.3
We're release iText 5.3.3 together with an update on XML Worker.
Release Notes:
The technical roadmap for 2012 consisted of 4 goals:
Digital Signatures— Make iText ready for PAdES and PDF 2.0: done!
XML Forms Architecture— Add support to flatten dynamic forms created by Adobe LiveCycle: done!
Android— Make an Android port of iText that is better than the (barely legal) ports created by third parties: done!
Cloud— Make iText "Cloud-ready": done! (Some of our customers are using iText on GAE.)
Goal number 3 and goal number 4 were already presented at the iText Developer Summit in March.
Let's see what happened to topics 1 and 2:
Digital Signatures
Bruno's white paper about PDF and digital signatures is almost completed. To make the examples more programmer-friendly, He added some convenience classes and methods to iText's signature API. He wants to distribute a 3/3 draft next week, and that's why he needed to release iText 5.3.3: he has made some changes to the FieldMDP functionality, Paulo implemented verification for CAdES signatures, he fixed an issue when verifying a Document-level timestamp, he has added some getters that make it easier to get info from a signed PDF, he has added a class that can tell you more about the permissions enforced by a signature, and so on... A 3/3 version of a manuscript is an 'almost final' draft. It means that all the chapters are there, but I may still add an extra example here or there.
Apart from that, Bruno has listed seven extra TODOs that weren't on the initial roadmap. Two don't involve changing iText —it's just a couple of ideas I had during the writing process—, two involve changes he may implement for iText 5.3.4 —they may be added as an appendix to the white paper—, and finally three major TODOs that will be added to the technical roadmap for 2013.
Next week, the almost final draft will be distributed, and Bruno is giving himself a couple of weeks to work on the feedback: corrections, suggestions, remarks,... sent to me by readers. So as far as goal 1 is concerned: mission accomplished!
XML Forms Architecture (XFA)
We've released SNAPSHOT versions of XFA Worker to selected customers and prospects. We've received plenty of feedback, and XFA Worker is now used in a production environment at one of our customers.
When we first announced this project, several companies showed their interest. Some bought an iText license, counting on us meeting our goal; others actively invested in the project.
However: there were also companies that said: We won't pay you, we'll wait until you publish the project on SourceForge. As explained yesterday, these companies don't play it fair. That's why we'll keep the source code of XFA Worker closed. We'll release a ZIP file with the necessary jars next week, but you'll need a license key to use them. We'll distribute Trial Licenses that allow you to use these jars for testing purposes for 30 days.
For us to make it possible to release XFA Worker, we needed to release XML Worker 1.2.0. There aren't many changes with respect to XML Worker 1.1.6, but the changes are needed for the first more or less 'public' release of XFA Worker 1.2.0.
With the new digital signature functionality and XFA Worker, many companies will be able to replace their Adobe LiveCycle Server instance. We don't cover the full spectrum of the Adobe LiveCycle ES, but we've focused on the functionality companies need the most, especially now that Adobe is scaling back its efforts to support LiveCycle.
In iText 5.3.3, we've also fixed some bugs in PdfReader
, PdfAWriter
, JPEG and TIFF handling, etc...; Michaël and Bruno have added some new functionality to PdfPTable
; and Kevin Day has started adding some methods that give you more fine-grained information when parsing PDF.
Changelog:
iText 5.3.3
- Changes made by Paulo Soares
- Fix: The PdfReader copy constructor didn't work correctly if the original PDF had compressed object streams.
- Fix: The predictor should also be applied to the deflate compression when reading TIFF files.
- Implemented verification of CAdES signatures.
- Changes made by Kevin Day
- Parsing PDF: incorporate the text-rise parameter
- Parsing PDF: expose glyph-by-glyph information
- Bugfix: text to user space transformation was being applied multiple times for sub-textrenderinfo objects
- Bugfix: Correct baseline calculation so it doesn't include final character spacing
- Changes made by Eugene Markovskyi
- PDF/A bugfix: no Exception is thrown for a non-embedded font.
- Changes made by Raf Hens
- Bugfix: JPEG resolution was sometimes negative due to uncareful bit manipulation (sign extension)
- Changes made by Michaël Demey
- Added convenience methods for the new
PdfPTable
functionality that allows you to define table breaks.
- Added convenience methods for the new
- Changes made by Bruno
- Report by Robert Simpson: he found a corrupt PDF with a reference to a negative object: -1 0 R, and suggested a fix so that
PdfReader
can deal with this syntax error. - Deprecated the
setAcro6Layers()
method. - Removed the
MultiColumnText
class, useColumnText
instead! PdfPTable
: added functionality that prevents a table break after a specific row.PdfPTable
bugfix: if the table ends with rows with zero height at the bottom of the page, skip those rows.PdfPTable
bugfix: Avoid repeating content; content can be consumed when using rotation 90 or 270.- Moved the
convertToHex()
method fromLtvVerification
toUtilities
- Added extra logging to different signing methods (showing CRL, OCSP, TSA information in the log files)
- Added what is needed for ECDSA support, but I don't know if it works because I don't know any PDF Viewer that already supports ECDSA.
- Bugfix: A FieldMDP can coexist with a DocMDP in a signature.
- Bugfix: If there's a lock on the fields, always add a FieldMDP entry to the signature.
- Added a
toString()
method to theFieldLock
class. PdfPKCS7
: Added two getter methods: one to get the Encryption algorithm, one to get the filter subtype.CrlClientOnline
: Avoid loading the same CRL more than once; switching to a more uniform way to add URLs to the list of CRLs.- Verification failed in case LTV timestamp was added (because of Key Usage and Extended Key Usage)
- Changing the Exception thrown by
LtvTimestamp
OcspClientBouncyCastle
: split up a single method into three different methods to make it easier to get an OCSP response.- Added
SignaturePermissions
: Convenience class to find out more about a signature and the permissions defined for that signature.
- Report by Robert Simpson: he found a corrupt PDF with a reference to a negative object: -1 0 R, and suggested a fix so that
XML Worker 1.2.0
section.
- Changes made by Alexander Chingarev
AbstractTagProcessor
is more overridable now.
- Changes made by Eugene Markovskyi
- Fixed
rgb()
bug for CSS colors defined in the
- Fixed