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-weightvalues of web fonts are applied, not only600.- 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
/ItalicAngleare written with an ASCII minus whatever the JVM’s default locale is. Under locales such assv_SEthey 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.
