PD4ML v4.0.23fx2 is out. This maintenance update of v4.0.23 includes all fixes of v4.0.23fx1, brings the new general-purpose PDF manipulation APIs, speeds up conversion and fixes layout, font and PDF output issues reported by our users.

New PDF manipulation APIs

  • com.pd4ml.pdf.sign: digital signatures with PKCS#12 files, PKCS#11 hardware tokens, HSMs and cloud KMS providers; RFC 3161 timestamps, DocMDP certification and PAdES-LT/LTV.
  • com.pd4ml.pdf.merge: page ranges from two or more PDFs merged into one document, accessibility tagging included, so merged PDF/A and PDF/UA documents stay tagged.
  • com.pd4ml.pdf.optimizer: removes unreferenced objects, deduplicates identical content and collapses incremental updates into one file.
  • com.pd4ml.pdf.xfdf: export and import of annotations and form data as XFDF (ISO 19444-1).
  • com.pd4ml.pdf.cos: the low-level PDF object model, parser and writer behind the packages above, usable directly for your own structural edits.

Performance

  • Conversion is faster, and PD4ML was tested and tuned under multi-threaded mass load.

Layout and pagination

  • Text with <sub>/<sup> elements on the first line after a page break is no longer partly lost.
  • Overriding the page header after a <pd4ml:page.break> no longer truncates the content of the last page that has the old header.
  • A page footer is placed on the right page again (a regression of v4.0.20).
  • Collapsed table borders are drawn correctly in tables with a <tfoot>.
  • The top page margin no longer changes with the license edition.
  • Spaces between words no longer disappear at some HTML widths, e.g. setHtmlWidth(700).
  • Fewer alignment differences in documents moved over from PD4ML v3.

Fonts

  • font-weight values of web fonts are applied, not only 600.
  • Arabic text from TrueType fonts loaded from the application’s resources is embedded instead of showing ? glyphs.
  • Some Chinese characters (e.g. with “Noto Sans SC Thin”) are no longer garbled (a regression of v4.0.23).
  • Text in embedded TrueType fonts is no longer clipped.

PDF output

  • Negative numbers such as a font’s /ItalicAngle are written with an ASCII minus whatever the JVM’s default locale is. Under locales such as sv_SE they were written with the Unicode minus sign, and Adobe Acrobat refused to open the PDF (error 110).

Other changes

  • Issues found by a static analysis of the source code are fixed.