Big Faceless PDF Library Releases

Released: May 24, 2023

Updates in v2.28.2


  • Added "roles" parameter to the Structure Tree.
  • Updated Arlington model trunk.
  • Viewer: Added SearchPanel.setMerged() to allow the search panel to group all matching text on a page into one item.


  • Updates to several output profiles (mainly PDF/A-4 and PDF/UA-1) to fix some bugs and align results with other tools. The PDF/UA-2 profile is now largely complete and matching the final draft of the specification.
  • Many small bugs fixed and improvements made to the Structure Tree, as a...

Released: Mar 20, 2023

Updates in v2.28.1


  • Previous release broke applying Signatures with Timestamps. Now fixed.
  • Previous release broke conversion to PDF/A of PDFs that had been cloned before conversion, where the original PDF was missing XMP metadata.
  • Previous release introduced a check for timezone-less dates in XMP, but the repair for this was failing on cases where the date was also invalid.
  • Fixed PDF/A conversion for PDFs containing fonts that share a FontDescriptor.
  • Cloning a PDF before PDF/A conversion could cause...

Released: Mar 10, 2023

Updates in v2.28


  • Added 'SignaturePolicy' class to manage changes to the digital signature validation policy used in the BFO PDF Library.
  • Added support for GlobalSign's new Qualified Signing Service, and added a 'setCustomAppearance()' method to set custom visuals for them.
  • 'FormSignature.verify()' can no longer deadlock while running simultaneously to 'OutputProfiler.apply()'. Progress in 'verify()' can now be controlled with the new 'FormSignature.cancelVerify()' and 'FormSignature.isVerifying...

Released: Nov 24, 2022

Updates in v2.27.2


  • Integrated 'Arlington' PDF data model as a validation step.
  • Added support for PDF extensions, specifically ISO 32001 (which adds the SHA-3 family of signature hashes) and ISO 32002 (which adds Edwards Curves Ed25519 and Ed448, both of which were added in Java 15).
  • Added 'AnnotationFile.setCustomAppearance()' to support custom visualizations for file annotations.
  • You no longer need to update or generate ProcSets, which have been obsolete since 2001.


  • Digitally signing a PDF will now...

Released: Sep 23, 2022

Updates in v2.27.1


  • Updated signature validity checks to match the current version of Adobe Acrobat.
  • You can now block "shadow attacks" on signatures.
  • Added new 'PDFImage.isIndexed()' and 'PDFImage.getTransparency()' methods.
  • Adjusted the loading process to match Acrobat's behavior, and to better handle some deliberately corrupted documents from the Safedocs corporation.
  • You can now identify a "billion laughs" type-error with page resources and fail early.
  • When creating a PDFImage from a source image with...

Released: Sep 6, 2022

Updates in v2.27


  • Dropped support for Java 6 - Supported versions are now Java 7 to 17.
  • Improved the process of repairing form fields on load, to try to match Adobe Acrobat's unpublished algorithm. For documents that require extensive repair on load, this may result in differences to the repair process affecting which annotations and fields are repaired.
  • PDF/A
    • When substituting fonts in a document with OutputProfiler.FontAction, you can now allow one font to be replaced by multiple fonts. This fixes that...

Released: Jul 4, 2022

Updates in v2.26.5


  • The Jars are now signed with SHA256 rather than SHA1.
  • Added the ability to allow signatures, that have just been signed, to be queried via various "get" methods.
  • Improved the pre-flight process for large embedded fonts, e.g. those used for Chinese, to stop the widths array growing too large for PDF/A.
  • Improved the workaround for when 2-byte fonts are used in Form fields, which reduces memory footprint for large forms.
  • PDFCanvas.beginTag() will now accept a "ref" attribute which is a...

Released: Mar 17, 2022

Updates in v2.26.4


  • Added PDFImage.setStrictDPI() to mimic the image DPI extraction rules from HTML5.


  • The "Resource Merge" step which can be used to potentially reduce the size of files assembled from multiple smaller documents was sometimes writing out fonts with a ToUnicode that was incomplete, or failing to identify duplicate glyphs because the originals came from fonts with a different "longloc" flag. Both have now been fixed.
  • Some very specific workflows could lead to a synchronization lock when...

Released: Feb 16, 2022

Updates in v2.26.3


  • Added PDFPage.createGraphics() and PDFCanvas.createGraphics(), to return a java.awt.Graphics2D object that can be used to write to the page or canvas. 
  • Added XMP.setValidating() method to allow unknown XMP properties to be set without failing (known properties must still be of the correct type). This makes things a bit more useful for PDF/A-4, which no longer uses extension schemas.
  • OutputProfiler: added a "getStrategy() method; added new "PartialPages" strategy to render what it can...

Released: Nov 11, 2021

Updates in v2.26.2


  • Tested and verified with Java 17, dropped support for Java 5, and removed all support for Applets from viewer package.
    (Note that JavaScript is NOT currently supported under Java 17; this is planned for a future release).
  • Reduced the memory required to load TrueType and (in particular) OpenType fonts, and delayed the instantiation of some of the data needed until the font is used. These changes makes it cheaper to load fonts that may not be used.
  • Added support for UTF-8 ECI mode to QR...