Legacy notice!

iText 5 is the previous major version of iText’s leading PDF SDK. iText 5 is EOL, and is no longer developed, although we still provide support and security fixes. Switch your project to iText 8, our latest version which supports the latest PDF standards and technologies.
Check related iText 8 content!

The focus for version 5.5.9 of iText 5 Core was not on new features but that doesn't mean we've been twiddling our thumbs. This new version contains numerous bug fixes and improvements.  

Tagged PDF and accessibility

  • Fixed an issue with tagging of nested lists.

  • Improvements in tagging of form XObjects.

  • When adding multiple Chunks to a Phrase, there's an optimization of merging them when they have the same properties. But this resulted in their accessibility attributes and roles being overwritten.


  • Corrected the allowed annotation types for PDF/A-1, PDF/A-2 and PDF/A-3.

  • Fixed issues with output intents in PDF/A. We incorrectly flagged the generated PDF/A document as invalid when stamping an existing PDF/A document. There was also an issue when merging PDF/A documents.

Text extraction

  • Refactored our text extraction implementation to make it more customizable.

Source code

We have also continued our reorganization of the source code. The Android/GAE version of iText, iTextG, has been merged as a branch into our main Java repository: itext/itextpdf. From now on, iTextG will also be available as a Maven artifact on Central. To simplify building from source, we have also added a Vagrant configuration and updated our build files and build documentation.

iText 5.5.9


  • DEV-1624: Fix incorrect lists tagging if nested list was the last element
  • Fix issue with CIDSet generation
    CIDSet shall be based on font.maxGlyphId property of the font, it is maxp.numGlyphs for ttf, because technically we convert all unused glyphs to space, e.g. just remove outlines. So, we should mark as used all glyphs of the embedded font. And now we generate CIDSet for all PDF/A documents, include PDF/A-2 and PDF/A-3. 

    Resolves: DEV-1615
  • Synchronization issue in Writers (DEV-1623)
  • Synchronization issue in Writers (DEV-1623)
  • Compare XMP metadata streams generically
    CompareTool already had compareXmp methods to extract and compare document level XMP. Expand that functionality to allow comparison of any XMP metadata stream. DEV-1629
  • Java 5 compatibility DEV-1623
  • Preserve documents IDs
    Don't force documents IDs to have length 16. Only create new ID when it's missing in the input file. DEV-1636
  • Adding a toString() method to an inner class of PdfPageLabels
  • Correct allowed annotation types for PDF/A
    The allowed annotation for PDF/A-1 and PDF/A-2 were switched. Redact annotation was missing. DEV-1639
  • PDF/A: test for allowed and forbidden annotation types were added DEV-1639
  • Fix incorrect tagging of inner content in FormXObjects DEV-1634
  • Fix image template incorrect tagging
    When template is wrapped in image, it becomes a single content item and is tagged as image. In other words, the Do operator is wrapped in marked content sequence. Template's inner content shall not be tagged in this case.
  • Correct case-sensitive name
  • Regression: Named Destinations creates invalid links since 5.5.7
    There was an error in the previous fix in PdfDestination. iText added a page indirect reference to a destination array when it already that page. DEV-1649
  • onGenericTag event uses wrong Rectangle (DEV-1633)
  • onGenericTag event uses wrong Rectangle (DEV-1633)
  • Signing ZUGFeRD document throws PdfAConformanceException (DEV-1650)
  • Port several commits from C#: 7e92efe, d8b55fa, be0912a
    Fix issue with coping Output intents in case Pdf/A Fix issue with coping signed documents Fix issue with coping signed documents in PdfSmartCopy DEV-1648 DEV-1651
  • Make collections iteration order independent of Java version. Fix PdfCopyTest
  • Fixing boolean logic to allow PDFs with an incorrect pages dict to be read in debugmode
  • Add Vagrantfile for a controlled building environment
  • Change readme because of merged repos
  • A chunk should not be added to the previous chunk if either contains accessible attributes. SUP-1213
  • More precise [blockcode]<hr>[/blockcode] tag support in XmlWorker DEV-1642
  • SUP-1223 Including a page label for page 1 since it cannot be read by Adobe LiveCycle without it.
  • Add strict javadoc profile
    Jenkins runs on Java 1.8 now, and Javadoc is a lot stricter. This generates lint errors, so the default is now not to check for javadoc lint. A profile was added for stricter javadoc checking.
  • Add PdfContentStreamProcessor:getRenderListener
  • Add convenience methods in text extraction API
  • Allow custom ContentOperators: convenience methods
  • Remove incorrect @since Javadoc for TextExtraction
  • Refactor LocationTextExtractionStrategy
    Improve extensibility: users can now override operations of the TextChunk (and thus influence behavior) without touching the default implementation and/or having to copy-paste the entire class.
  • Modernize code in LocationTextExtractionStrategy
  • Fix compile errors about @Override
    @Override doesn't work for interface implementations in Java 5
  • Fix sameLine bug in LocationTextExtractionStrategy
    Tests were failing
  • SUP-1220 Adding overloaded method that allows a page label to be put on the first page. Previous change that put labels on every page is being reverted.
  • Keep older API methods for TextChunk
    Some customers apparently use these methods, accessing them through reflection. While they should upgrade to take advantage of the new architecture, we will not force their hand.
  • Make TextChunkLocation a Comparable<> class
    So that users can plug in custom comparison logic, as may be required by uncommon sameLine implementations
  • Replace fixed underline offset which explicitly depends on font size in favor of underline offset multiplier which is multiplied by font size on flushing for CSS appliers. Fix underline offset multiplier bug for images in XmlWorker
  • Update BUILDING.md
  • Update build instructions
    Pass mvn command to ssh directly.
  • CleanUpTool: fix behavior in case when clipping path is cleaned
  • Don't require a /Lang entry for PDF/A-1a when stamping (DEV-1688)
  • Fix test
  • Fix the case when resourceRootPath wasn't taken into account, added another XmlWorkerHelper overload
  • XmlWorker: Fix incorrect width calculation of nested div in table 
  • Reorganize pom files
    • Explicitly set Java version to 1.5
    • Put blocks in the recommended ordering according to POM Code Convention: https://maven.apache.org/developers/conventions/code.html
    • Change mailing list to StackOverflow
    • Change SCM to Git Resolves QA-62
  • Fix unethical reading mode for AES256 encryption 
  • Fix cloning in PdfEncryption
  • Deprecate MarkedObject and MarkedSection
  • Reverting changes made by 807797a955 commit.
  • SUP-1281 Check added to see if chunks that are being added have the same role so if the role is different it is not overwritten.
  • Check to see if either of the roles are null before comparing them.
  • Refactor CssAppliersImpl.clone() for extending
  • Make itextpdf dependency optional in pdfa, xtra, xmlworker
    This allows com.itextpdf:itextpdf to be replaced by com.itextpdf:itextg on Android / GAE.
  • Add links to all API docs
  • Get rid of parent.relativePath warnings
    The default value for `parent.relativePath` is `../pom.xml` and that default value gets injected in the effective pom, triggering the warning. Add an empty `[blockcode]<relativePath>[/blockcode]` to `[blockcode]<parent>[/blockcode]` so that it resolves the parent pom from the repositories.
  • Test refactoring
  • Fix multithreading issue in DefaultCounter.
  • Add Contributor Code of Conduct + update Contributing Guide
  • Update Readme
  • Update copyright
  • Skip javadoc errors

iText RUPS

  • Null check in StructureTreeNode constructor

  • Reorganize pom.xml

  • Update program icon

XFA Worker

  • XFAWorker: More deep parent subform repeating in case of wildcard binding DEV-1612
  • Update cmp files. DEV-1615
  • XFAWorker: Look for substituted font in the provided disk path in case it is not present in AcroForm DEV-1616
  • Investigate XFA Baluff test (different behavior on TeamCity/Jenkins and locally), Java version DEV-1627
  • Investigate XFA Baluff test (different behavior on TeamCity/Jenkins and locally), Java version DEV-1627
  • Fix cmp file DEV-1634
  • Fix cmp file Add a new XmlWorker test and fix cmp files which contain [bockcode]<hr>[/blockcode] tag DEV-1642
  • XFAWorker: use page areas which were previously multiplied by wildcard binding in case we need to get a new instance of page area SUP-1225
  • Add Vagrantfile
  • Add strict javadoc profile
    Jenkins runs on Java 1.8 now, and Javadoc is a lot stricter. This generates lint errors, so the default is now not to check for javadoc lint. A profile was added for stricter javadoc checking.
  • Newer version of maven-compiler-plugin
  • XFAWorker: Fix line-through CSS attribute application for RichText elements DEV-1670
  • Added a null check for targets. SUP-1251 Fix issue with Long value DEV-1680
  • Fix issue with parsing long values like '2.0E10' DEV-1680
  • Add cmp file for time zone UTC
  • Workaround for time zone issue
    Set the time zone to UTC when the test starts, and restore the original time zone at the end of the test. See: DEV-1678 Add new tests DEV-1684
  • Fix issue with invalid number pattern DEV-1684
  • XFAWorker: fix table splitting issue. Table content area was overlapped by row content area DEV-1668
  • XFAWorker: fix table leader overflow data binding problem - binding was only done properly for the first header DEV-1669
  • Get rid of a duplicate test
  • XFAWorker: Fix trailer overflow elements resolving in case a template tag was not bound to any data and did not therefore proceed to Form DOM. Improve SomExpression resolving DEV-1663
  • XFAWorker: Initial fix for parsing null{} and zero{} clauses DEV-1663
  • XFAWorker: fix issue with content area calculation when trailer overflow element is used DEV-1663
  • Fix cmp files DEV-1682
  • XFAWorker: fix NullPointerException in case FontFamily is not specified in FontDescriptor. Add a new test
  • XFAWorker: Fix page area retrieval in case of multiple nested page sets DEV-1691
  • Add new XFAWorker tests DEV-1690
  • XFAWorker: relayouting the whole subform in case presence property was changes via JS on $layout.ready event DEV-1690
  • XFAWorker: update empty status on relayout in case visibility status has been changed via JS DEV-1690
  • XFAWorker: fix check button caption placement in case reserve attribute is set to 0 DEV-1690
  • XFAWorker: add static page content to the end of the document if there was not enough pages produced by the XFA templat DEV-1687
  • Add logging to XFADemo
  • Fix Maven warnings