Release iText 5.5.4
The release of iText 5.5.4 Core on December 17, comes exactly 3 months after the previous release. If you have a look at the changelog, you'll notice that XFA Worker has received a lot of attention in this release.
Our initial XFA customers are very happy with the functionality we provided in previous versions, but new XFA customers are discovering more and more features in the XFA spec and we're consistently adding these features to XFA Worker.
Release Notes
We're releasing iText 5.5.4 on December 17, exactly 3 months after the previous release. If you scroll down in the changelog, you notice that once again, XFA Worker has received plenty of attention. Our initial XFA customers are very happy with the functionality we provided in previous versions, but new XFA customers are discovering more and more features in the XFA spec and we're consistently adding these features to XFA worker.
But let's focus on the open source part of iText:
The most promising new feature is hidden in a single line: Added PDF "clean up" functionality that can be used for redaction. We don't have any examples yet, but it seems that more and more people are asking for functionality that allows you to remove content from a PDF. With "to remove", we don't mean "covering it with a colored rectangle", but to actually remove content from the PDF's content stream. Currently, we allow removing content based on redaction annotations as well as based on rectangles you can define in your code. This functionality is currently only available in the Java version, it hasn't been ported to C# yet (it's on our TODO list). Once we have some examples, we count on your feedback to improve this functionality.
Our efforts with respect to PDF/A support seem to be appreciated. We've received interesting feedback and... some bug reports. We fixed problems with images in PDF/A-1A, problems with combinations of PDF/A-2 and signatures, we've added ZUGFeRD extension levels, and so on... On a related note: we've added some fixes that help people to avoid a common pitfall when manipulating a Tagged PDF document. When creating PDF from HTML, we now take the alt
value of an tag into account.
Some languages have a "right to left" writing system that can be set with the `dir` attribute in HTML. We've now added support for this attribute in XML Worker, and while we were at it, we've added support for justified text when writing from right to left.
We've discovered that some people were using the `LargeElement` functionality for `PdfPTable`s in a way that made them lose a row and/or a header. We applied a fix so that this wouldn't happen anymore in the future.
We've improved `PdfGraphics2D` when using font families for which there are no fonts available for every style (for instance: no bold font, no italic font, or not bold-italic font).
Changelog
iText 5.5.4
- Changes made by Alexander Chingarev
- Ignore broken annotations when flattening FreeText annotations.
- Do not add DigestValue, DigestLocation and DigestMethod fields when signing PDF documents of version 1.6 and higher as it breaks PDF/A-2 conformance.
PdfAChecker
threw PDF/A-2 conformance exceptions when aPdfAction
chunk was added to the document.CompareTool
refactoring: methods for object comparison have been made public.- Improved the
TextRenderInfo
class regarding the calculation of widths of text snippets and unsupported encodings. - Fixed an issue when searching for a CJK compatible font.
- Added a marker for those parts of the code that aren't compatible with Android.
- Fixed the exception "alt.entry.should.specify.alternate.description.for.figure.element" for PDF/A-1a file creation.
- Fixed
java.lang.IndexOutOfBoundsException
when validating signature conformance to PDF/A-2 (reported by Axel Burri) - Added ZUGFeRD extension levels (basic, comfort, extended).
- Added PDF "clean up" functionality that can be used for redaction.
- Changes made by Eugene Markovskyi
- Fixed a text overlapping issue in the Div layout. The issue used to occur if a paragraph overflowed a page bottom boundary only with "spacing after".
- Fixed an issue with fonts that weren't being embedded in specific circumstances.
- Added support for RTL in a bulleted list and processing of the "dir" attribute in the table-tag (XML Worker). Improved table alignment in case of RTL direction.
- Changes made by Alexey Subach
- Improved
Barcode128
: add possibility to strictly use provided code set (A, B, C). AUTO mode is left for backwards compatibility as default mode. - Added an
isWordSplit()
method to ColumnText to check if any word was split into several parts (if there was not enough width for the whole word). - Support of justified alignment for right-to-left text.
- Improved
- Changes made by Pavel Mitrofanov
- Added new pdf names (
RO
,REDACT
,OverlayText
,Repeat
) and changed the return type of thePdfContentByte.addFormXObj()
method so that it returns aPdfName
instead ofvoid
.
- Added new pdf names (
- Changes made by Bruno Lowagie
- For some reason, we explicitly forbid to change the dimensions of a push button. However, I do not remember this reason. See also iText: button resize affects label on StackOverflow.
- Changes made by Michaël Demey
- Making sure that the
getDigestAlgorithm()
returnsSHA1withRSA
if the constructor with params(byte[], byte[], String)
is used. - Updated
PdfStamperImp
so that a PDF is automatically tagged when a Tagged PDF is being manipulated (instead of having to enable tagging manually). - Fixed a typo in the string that is used to indicate a col span: it was
Colspan
; it's nowColSpan
. - Bugfix: the length of a stream could be defined as a negative length.
- An incomplete
PdfPTable
would sometimes ignore headers and drop the first rows of each page.
- Making sure that the
- Changes made by Benoït Lagae
- Some changes to
PdfGraphics2D
concerning manual creation of bold & italic fonts when there are incomplete font sets (e.g. only plain & bold, or only plain & italic). PdfGraphics2D
: moved the underline a bit lower so that manually created bold fonts do not overlap with the underline.PdfGraphics2D
: removed restriction that a bold font will only be simulated if we have a custom strokeWidth.- Added the
PdfName
for theSummary
tag that can be set to aPdfPTable
in a Tagged PDF document. - In Tagged PDF, a
PdfPTable
must have an Owner entry (/O
) in its element dictionary for Acrobat to consider the table valid, otherwise the Summary check will fail.
- Some changes to
- Changes made by Kevin Day
- Make it possible for users who already have a Random Access File to still take advantage of the
createBestSource()
logic
- Make it possible for users who already have a Random Access File to still take advantage of the
XML Worker 5.5.4
- Changes made by Eugene Markovskyi
- Added support for RTL in a bulleted list and processing of the "dir" attribute in the table-tag (XML Worker). Improved table alignment in case of RTL direction.
- Changes made by Michaël Demey
- Image alt text is now set onto the image object when creating Tagged PDF.
- Changes made by Benoït Lagae
HtmlPipelineContext
now uses theImageProvider
when it is explicitly set, not the defaultAbstractImageProvider
.- XML Worker now recognizes
dir="rtl"
, both as an HTML attribute and a CSS property, for <tr> and <td> tags, in addition to the already existing <table> functionality
- Changes made by Bruno Lowagie
- Many questions on StackOverflow reveal a need to parse a snippet of HTML into a list of Element objects. That's why we've added a convenience method to
XMLWorkerHelper
that takes a String of HTML and a String of CSS and returns a list of Element objects.
- Many questions on StackOverflow reveal a need to parse a snippet of HTML into a list of Element objects. That's why we've added a convenience method to
iText RUPS 5.5.4
- Changes made by Michaël Demey
- Avoiding npe's when dealing with invalid images.
- Making
file
a local variable and not a static variable - Adding a
closeOperation
onstartApplication
XFA Worker 5.5.4
(This is a closed source project on top of iText and XML Worker.)
- Changes made by Eugene Markovskyi
- Fixed invalid table rendering (header) and page breaks
- Changed the bounding box calculation on the page border. Our behavior differs from what Acrobat does, but it helps us to get element boundaries that look better.
- Table cell borders were not smoothed out after splitting.
- Fixed a text overlapping issue in the Div layout. The issue used to occur if a paragraph overflowed a page bottom boundary only with "spacing after".
- New XFA tag structures added to JS scripting.
- Fixed a problem with invalid footers.
- Support for optimized re-layout after event scripts evaluation. Split the JS evaluation into several stage: initialize. Ready and etc.
- Fixed unnecessary extra border line created in table.
- Fixed an issue with fonts that weren't being embedded in specific circumstances.
- Added support for RTL in a bulleted list and processing of the "dir" attribute in the tables.
- In specific cases, XFA Worker dropped sections when flattening PDF.
- Fixed dynamic rows rendering problem (tables).
- FormCalc2JS: Wrapping of accessors. "accessor" converted to ""accessor""
- FormCalc: "Null" is not a defined exception
- Improved handling of overflow tag.
- Fixed data formatting issue. "s" is added to the value.
- Fixed JS DataBinding. Incorrect rawValue.
JsInstanceManager
:addInstance
method adds new node to the end of parent node.- Fixed some additional RTL issues
- References like
[parentElement].variables.[variableName]
were not resolved properly - HAlign should not be applied to positioned Draw element
- Page break was not triggered when on the first page.
- Fixed a problem involving missing empty pages.
- Fixed a font-related problem causing a "Too Many Open Files" exception.
- Fixed incorrect position of the leader element.
- Fixed problem with incorrect date value and extra empty line.
- Changes made by Alexey Subach
- Code128 Barcode differs from what can be viewed in Adobe Acrobat. Improved barcode128 support.
- Do not skip empty patterns.
- Speeded up Rhino script evaluation.
- Fixed incorrect table cell rotation and borders, text wrapping in header.
- Fixed invalid barcode rendering. Do not draw barcode with empty data.
- Support for numeric field with pattern
num.integer{}
. Default numeric pattern has been added. - Dynamic ordered list generation.
- Add dataNode JS property - build Data nodes.
- Apply dynamic margins in Positioner.
- Fixed incorrect JS structures that were generated when child have names same as parent's properties.
- Fixed invalid border rendering in specific table instances.
- Refactoring to new FormNode structures.
- JS view scope of untitled subform children.
- More precise border drawing for comb element.
- JavaSript: Accessors that start with "_".
- Support for Instance Managers for subforms.
- Added
xfa.datasets.*
to the tree. - Simulate Acrobat behavior with
$
in number pattern when data is not correctly formed. - Add new nodes to prototype template.
- Add $data object to resolve datasets correctly.
- FormCalc2JS: Variable without "var" keyword "s=$". Check for undefined values assignment.
- Add Len FormCalc function.
- Fix HasValue FormCalc function.
- New app configuration added, host config modified.
- Resolve instance managers from unnamed subforms correctly
- Fix instance managers for multiplied subforms.
- Fixed incorrect processing of
zero{}
pattern. - Added support for reading attachments: import attachment names into XFA fields.
- Added support for XFA app and Host configuration.
JsInstanceManager
: addremoveInstance
method.- Deep nodes resolving from unnamed subforms in
searchByName()
method. - Better support of items elements resolving (resolve both bound and display items by SOMexpression)
- Removed invalid property definitions.
- Implemented the
fillColor
property for subforms/fields. - Improved ResolveNodes: resolve expressions like
#items[*]
. - Improved working with items (bound and display values).
- Fixed incorrect Date Formatting in case only a value for the year was used.