Big Faceless PDF Library v2.26.3

Released: Feb 16, 2022

Updates in v2.26.3

Features

  • 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 from fatally damaged pages; ensure it only throws ProfileComplianceException when conversion fails; allow rasterized pages to be quantized to 8-bit via setCompressionOptions().
  • XMP.getData() will include the namespace for unknown fields. Added an XMP.addAll() method to merge XMP objects. Added an XMP.repair() for when the repair to an XMP needs to be run manually, is it might be for an image XMP.
  • Improvements to the code matching XFA form fields to the Acroform fields.
  • Made various changes internally to allow projects using the API to be compiled to native code using the GraalVM project. Mostly this was removing any use of Serialization, which was used internally in some places to store state.

Fixes

  • Extraction of XMP metadata from PNG and JP2 images had never worked - fixed.
  • The StandardEncryptionHandler was failing to decrypt files if bit 31 was not set as required in the specification.
  • Fixed regression in 2.26 relating to image scaling; when on a workflow that runs two passes over the page (namely, printing), a transform applied to bitmap images was applied twice - only noticeable with anamorphic scaling. Symptoms often included a blank or damaged page when printing.
  • Fixed a problem with PDF/A-1 validation - it was ignoring trailing noise in any Info Dictionary dates, causing us to pass some invalid files as valid.
  • Fixed a very specific issue when PDF/A conversion when no substitute fonts are available for a Type1 font inside a Type3 font.
  • Fixed a complaint about "this page is not in the PDF" when merging files that contains bookmarks and a structure tree.
  • Fixed obscure threading issue when rendering OpenTypeFonts that are shared across PDFs.
  • More fixes for another batch of difficult documents to ensure it handle various types of corruption as nicely as possible.
  • Fixed exception when cloning a PDF then accessing the clones bookmarks.
  • Some fixes to ensure that brand new PDF files are created in a way that is generally compliant with PDF/A (fixes to Type3 fonts, canvas cloning, DeviceNColorSpace).
  • Viewer: fixed the code for generating self-signed certificates added in the previous release to replace the calls to the internal sun classes.