2026-10-18v4.0.24 v4.1.2Bug fixed OpenType fonts with PostScript (CFF) outlines (.otf, e.g. Noto Sans CJK) are now embedded as a font subset instead of the whole font file, so a PDF with a CJK font of 15 MB is a few hundred KB instead of 23 MB. (HELPD-798)
2026-10-18v4.0.24 v4.1.2Improvement generateMulticolumn() (and the -multicolumn command line option / multicolumn taglib attribute) now produces multi-column PDF output as in PD4ML v3: the content flows through the given number of columns per page, a page break moves to the next column, <pd4ml:page.break multicolumn="true"> starts a new page, page headers and footers are placed once per page and $[page] / $[total] count PDF pages. (HELPD-778, HELPD-795, HELPD-805)
2026-10-17v4.1.2Bug fixed ported all fixes from v4.0.24’s Large-scale backlog cleanup to v4.1.2
2026-10-17v4.0.24Bug fixed PDF and XMP dates include the daylight saving time offset (e.g. +02'00' under CEST).
2026-10-17v4.0.24Bug fixed PDF/A: setting only pd4ml.document.date sets the XMP dates too, so the output no longer fails veraPDF rule 6.7.3-1.
2026-10-17v4.0.24Bug fixed Text inputs (text, password, email, search, tel, url, number) without an explicit width now get the browser's default width: size (default 20) average characters plus the widest-character allowance, plus padding and border; they used to be too narrow by default and too wide with a size attribute. (HELPD-647)
2026-10-17v4.0.24Bug fixed Unstyled text inputs now use the browser default style (13.333px font, 1px 2px padding, a 2px border drawn as a 1px gray frame), so they get the same size as in browsers; padding and border are no longer added twice to their width, and a border with border-style: none no longer counts toward an input's size. (HELPD-647)
2026-10-17v4.0.24Bug fixed Flex items sized to their content no longer take the full container width when they contain an element with a percentage width, min-width or max-width; as in browsers, the percentage counts as auto while the item is measured and then resolves against the item's final width. (HELPD-647)
2026-10-17v4.0.24Bug fixed Table cells: the max-width of blocks in cells is applied, percentage margins in fixed-width cells no longer widen the table, a fixed-width column is as wide as its width (at least its min-content width) instead of its content's max-content width, and spanning cells (colspan) over fixed-width columns are no longer ignored. (HELPD-647) Bug fixed: A table-layout: fixed table with a percentage width inside an auto-width table cell now fills the cell, as in browsers, instead of collapsing it. (HELPD-647) Bug fixed: Floats, inline-blocks and absolutely positioned boxes whose content wraps (because of the available width or their max-width) now take that full width instead of the width of their widest line, so aligned text lines up with the box edge, and inline elements no longer lose their container's margins, borders and paddings twice from their available width. (HELPD-647)
2026-10-17v4.0.24Bug fixed In quirks mode (no doctype, or a legacy one) tables no longer inherit the font size, weight, style, variant, line height and white-space of their surroundings, as in browsers; for example, text in a table inside <font size=5> now has the default size. (HELPD-647)
2026-10-17v4.0.24Bug fixed A float with a percentage width, min-width or max-width inside a float, inline-block or absolutely positioned box no longer makes that box too wide or too narrow: as in browsers, the box sizes itself with the float at auto width and the percentage resolves against the result. (HELPD-647) Bug fixed: A float, inline-block, absolutely positioned box or auto-width table cell containing text followed by a float on the same line is now wide enough for both, so the text no longer wraps below the float. (HELPD-647)
2026-10-17v4.0.24Bug fixed Text in the built-in Helvetica, Times and Courier fonts (no TTF embedding) is now placed on the same baseline as the browser's Arial, Times New Roman and Courier New, about 1pt lower than before, so it is vertically centered in table cells as on screen. (HELPD-769)
2026-10-17v4.0.24Bug fixed A block with a percentage min-width or percentage horizontal margins, a percentage or auto-width <hr>, a block with a width of 100% or more, or a percentage-width table inside a float, inline-block, absolutely positioned box or auto-width table cell no longer stretches that box to the page width or beyond: as in browsers, the box sizes to its content and the percentages resolve against the result. (HELPD-647) Bug fixed: Horizontal rules (<hr>) now follow the browser box model: a percentage or fixed width is the width of the line, with borders and padding added on top, a rule without a width fills its container including its borders instead of overflowing it by 2px, and rules in DOCX and RTF output get their exact specified width. (HELPD-647)
2026-10-17v4.0.24Bug fixed A rounded-corner cell background (border-radius) no longer shows a faint seam next to a square neighbour with the same background. (HELPD-601)
2026-10-17v4.0.24Bug fixed In the built-in SVG renderer, text-anchor (middle, end) is now applied to a <text> element without an x attribute, so end-anchored or rotated (vertical) SVG text is no longer shifted off the image or missing.
2026-10-17v4.0.24Bug fixed A block with a percentage width, max-width or padding inside a float, inline-block, absolutely positioned box or auto-width table cell no longer stretches that box to the page width or beyond: as in browsers, the box sizes to its content and the percentage resolves against the result. Bordered or padded blocks inside floats no longer wrap their text. (HELPD-647)
2026-10-17v4.0.24Bug fixed A word that continues across an inline element boundary (for example <em>word</em>. or <a>link</a>,) is no longer split at the line end, so lines no longer start with stray punctuation. (HELPD-791)
2026-10-17v4.0.24Bug fixed Form controls (input, select, textarea, button) and images with a percentage width inside a float, inline-block, absolutely positioned box or auto-width table cell no longer stretch that container to the full available width; as in browsers, the container is sized to the element's natural width and the percentage applies to it, and an <img width="100%"> in an auto-width table cell no longer disappears. (HELPD-647)
2026-10-17v4.0.24Bug fixed Title and page number alignment in headers and footers defined with the v3 API or the JSP taglib (PD4PageMark) is no longer overridden by document CSS such as td { text-align: left; }. (HELPD-530)
2026-10-17v4.0.24Bug fixed In RTF output, empty table cells without padding are no longer written with a zero width, which made MS Word show the document as a single page and fail to export it to PDF. (HELPD-519)
2026-10-17v4.0.24Bug fixed Each embedded TrueType font subset in a PDF now gets its own subset tag, so documents using emulated (synthetic) italic or bold, several sizes of one font, or the pd4ml.document.id property no longer contain different font programs with the same name, which made Adobe Acrobat stop rendering the document. (HELPD-848)
2026-10-17v4.0.24Bug fixed DOCX output of list items containing blocks (tables, nested lists, empty blocks, blocks after links) is well-formed and opens in Word; table grid columns are never zero-width. (HELPD-519)
2026-10-17v4.0.24Bug fixed Concurrent conversions with fonts loaded from the classpath (useTTF("java:...")) no longer use partially written or empty temporary font files, which made text lose its font. (HELPD-554)
2026-10-17v4.0.24Bug fixed Custom metadata added with addMetadata() keeps PDF/A output valid: custom properties get a PDF/A extension schema description, and hidden properties are written in their own namespace. (HELPD-283)
2026-10-17v4.0.24Bug fixed The PDF document language (/Lang) is taken from <html lang> when <body> has no lang attribute, instead of always "en". (HELPD-716)
2026-10-17v4.0.24Bug fixed In collapsed-border tables, 1px cell borders next to rowspan cells are no longer hidden by neighbouring cell backgrounds, and a table moved to the next page keeps its top border. (HELPD-792) Bug fixed: In table cells, the top margin of the first block and the bottom margin of the last block (e.g. <p style="margin-bottom: 8pt">) now count as in browsers, so table rows are no longer tighter than on screen; only in quirks mode (no or a legacy doctype) are the default margins of a leading or trailing paragraph, heading or list dropped, as browsers do. (HELPD-792)
2026-10-17v4.0.24Bug fixed With the v3-compatible API, a page background image or color and a watermark set on a PD4PageMark without a title or page number template are no longer ignored. (HELPD-592, HELPD-593)
2026-10-17v4.0.24Bug fixed SVG stroke-dasharray is honored in PDF output: dash and gap lengths follow the SVG, a zero-gap pattern (e.g. "6 0") draws a solid line, and solid strokes after dashed ones stay solid. (HELPD-423, HELPD-497)
2026-10-17v4.0.24Bug fixed Arabic text in fonts without Arabic presentation forms (e.g. Haradh) is shaped with the font's own layout tables instead of being shown as ? or in a fallback font. (HELPD-710)
2026-10-17v4.0.24Bug fixed Thai and Lao text is shaped with the font's layout tables, so tone marks stacked above vowels are positioned correctly instead of overlapping or being detached. (HELPD-521)
2026-10-17v4.0.24Bug fixed In left-to-right paragraphs, the space between a right-to-left word and the following left-to-right text stays between them instead of being moved before the right-to-left word. (HELPD-431)
2026-10-17v4.0.24Bug fixed Absolute font file paths and URLs in pd4fonts.properties are used as they are instead of being resolved against the font directory. (HELPD-465)
2026-10-17v4.0.24Bug fixed An element with display: table-cell inside a table cell no longer breaks the table structure, and percentage heights and max-width of floats and flex items resolve against the correct container. (HELPD-579) Bug fixed: With box-sizing: border-box, percentage heights and min/max-heights now include the box's padding and border as in browsers, max-height also limits an explicit height, and percentage heights resolve against the parent's content height. (HELPD-579)
2026-10-17v4.0.24Bug fixed A heading with page-break-after: avoid moves to the next page together with the following block instead of being left alone at the bottom of a page. (HELPD-307)
2026-10-17v4.0.24Bug fixed Text marked white-space: nowrap stays on one line in table cells, also when it is split by font fallback or nested inline elements (e.g. "€ 30,50"). (HELPD-448)
2026-10-17v4.0.24Bug fixed A text <input> inside an absolutely positioned element keeps its default or explicit width instead of being painted as a sliver. (HELPD-780)
2026-10-17v4.0.24Bug fixed A width: 100% table inside a box with margins, borders or padding is no longer narrowed by subtracting the box's spacing twice. (HELPD-843)
2026-10-17v4.0.24Bug fixed <pd4ml:page.break ifSpaceBelowLessThan> is honored on pages that end with an explicit page break, so a footnote no longer lands on the next section's page. (HELPD-838)
2026-10-17v4.0.24Bug fixed A <pd4ml:page.footer> or header defined further down in the document applies from the page where it is defined instead of appearing on page 1. (HELPD-834)
2026-10-17v4.0.24Bug fixed In RTF output, a styled <hr> is drawn in its CSS border or background color instead of always black. (HELPD-611)
2026-10-17v4.0.24Bug fixed In RTF output, sidebar-style blocks with a background and padding are rendered as one shaded box with their padding, without extra white space. (HELPD-817)
2026-10-17v4.0.24Bug fixed Absolutely positioned content taller than a page is paginated completely again instead of being cut off after the in-flow content ended. (HELPD-474)
2026-10-17v4.0.24Bug fixed merge() no longer fails with "Parsing of PDF failed" (ClassCastException) on PDFs whose document information (/Info) or outline entries are stored as indirect objects. (HELPD-145)
2026-10-17v4.0.24Bug fixed Encrypted PDFs without a document ID (/ID) are decrypted correctly when loaded, so saving or overlaying them (e.g. adding a watermark) no longer produces empty pages. (HELPD-706)
2026-10-17v4.0.24Bug fixed In RTF output, paragraphs (<p>, <div>) inside table cells and list items are written as regular paragraphs again instead of nested tables, so list bullets stay on the same line as their text. (HELPD-814, HELPD-815)
2026-10-17v4.0.24Bug fixed In RTF output, consecutive block elements (e.g. <div>) inside a table cell, including page header/footer tables, are separated by a paragraph break again instead of being merged onto one line. (HELPD-724, HELPD-725, HELPD-726, HELPD-727, HELPD-816)
2026-10-17v4.0.24Bug fixed Text in <input> and <button> fields now uses the useTTF() font fallback, so non-Latin values (e.g. Hindi) no longer show as boxes. (HELPD-384, HELPD-629)
2026-10-17v4.0.24Bug fixed SVG viewBox values with decimals no longer cause a NumberFormatException, and position: absolute / fixed boxes are painted above the content that follows them instead of being covered by table borders. (HELPD-360)
2026-10-17v4.0.24Bug fixed SVG images that the Batik renderer cannot process (e.g. with an unresolvable clip-path URL) are now drawn with the built-in SVG renderer instead of being omitted. (HELPD-359)
2026-10-17v4.0.24Bug fixed Blocks with an explicit small or zero height whose content draws nothing (e.g. connector lines built from empty <div> elements) are no longer stretched to a full line height. (HELPD-280) Bug fixed: Inside table cells, explicit widths and margin: 0 auto centering of blocks are honored, absolutely positioned boxes in centered rows are placed correctly, and fixed-height boxes holding only fixed-height blocks keep their height. (HELPD-280) Bug fixed: An absolutely positioned block placed by its static position after inline text now starts below that line, a float's top margin no longer also pushes its parent down, and a block with a fixed height keeps it and lets its content overflow, as in browsers. (HELPD-280)
2026-10-17v4.0.24Bug fixed Inline <svg> elements without an xmlns attribute are now rendered instead of being left blank. (HELPD-275, HELPD-256, HELPD-846)
2026-10-17v4.0.24Bug fixed Table cells spanning several fixed-width columns (colspan) no longer overlap or clip their content; their minimum width is now distributed over the spanned columns. (HELPD-224)
2026-10-17v4.0.24Bug fixed :nth-child() and other structural selectors now work for table rows wrapped in misplaced elements (e.g. <div> inside <tbody>), as in browsers. (HELPD-336)
2026-10-17v4.0.24Bug fixed In RTF output, list items with several blocks keep their bullet on the first line, and an item following an inline list item gets its own bullet. (HELPD-867)
2026-10-17v4.0.24Bug fixed Fractional lengths (e.g. width: 4.0002%) are no longer rounded to whole units when element styles are shared, so percentage column widths are applied exactly. (HELPD-268)

2026-10-12v4.1.1RELEASE v4.1.1 is released and available for download
Bug fixed adapted all actual bugfixes and improvements from v4.0.23fx2 branch

2026-10-12v4.0.23fx2RELEASE v4.0.23fx2 is released and available for download
Bug fixed Fixed wrong collapsed border widths for a <tfoot> placed before <tbody>: a thick top edge and a thin bottom edge.
Bug fixed Merging tagged PDF documents (PDF/UA, PDF/A-2a) keeps the structure tree of every merged document, so the result remains properly tagged. (HELPD-528)
Improvement Added support for OpenType (.otf) fonts with CFF outlines, fixed incorrect font metrics in PDF font descriptors, and made embedTTFs(false) stop embedding fonts.
Bug fixed page header/footer redefinitions taking effect on the wrong page, and a possible hang or lost content when the header and footer are taller than the page.
Improvement Added support for numeric font weights (e.g. 300, 500, 600) with @font-face fonts. The face with the closest matching weight is now chosen, as in browsers, and bold is emulated when no heavy enough face is declared.
Bug fixed The top margin of the first block no longer depends on the license type: the automatic evaluation watermark no longer keeps the margin that is dropped otherwise. (HELPD-719)
Bug fixed text being partially lost on a line that starts exactly at the top of a new page and contains subscripts or superscripts.
Bug fixed A noref footnote placed right before a page break is printed on the page where it occurs instead of the next page. (HELPD-728)
Bug fixed Fixed some CJK characters being drawn and copied as unrelated symbols (e.g. 用 as 🆍) with fonts like Noto Sans SC.
Bug fixed Fixed PDFs that Acrobat refused to open when the JVM ran in a locale such as sv_SE, which writes a Unicode minus sign in numbers.
Bug fixed Fixed spaces between words sometimes disappearing ("as task" → "astask") at certain page widths, in justified text and with ligatures enabled.
Improvement Some large documents now convert about 2× faster, and parallel conversions run about 30% faster (tested with 6 threads).
Bug fixed Redefining the header after a PD4ML page break in HTML results in content clipping in the generated PDF document in some cases.
2026-09-07v4.1.1 v4.0.23fx2Improvement Static Analysis & Code Quality Hardening. More details...
2026-09-02v4.1.1Bug fixed DOCX Block's background applies only to its content, not to the block itself.
Bug fixed DOCX Table headers are not repeated after a page break.
Bug fixed DOCX Incorrect spacing between headings when they are located at different block nesting levels.
Bug fixed RTF DOCX In the case of multi-nested content blocks, indentation is not applied in all instances.
Bug fixed DOCX The image does not display if the value of the src attribute of the <img> tag ends in a trailing slash.
Bug fixed DOCX Wrong unit-conversion constant in DocxDocument.drawImage() caused incorrect image scaling.
Bug fixed DOCX superscript link causes unwanted line breaks
Bug fixed DOCX invalid valign value may result in corrupted document
Bug fixed DOCX line of text may have incorrect full justification, if immediately followed by a line break
Bug fixed DOCX paragraph text style inheritance issue (line-height)
Bug fixed In DOCX, the <dd> tag is incorrectly converted into a ordered list.
Bug fixed DOCX <span> tags in the heading cause unwanted line breaks.
Improvement Five new PDF document-processing APIs, each with a matching command-line tool (java -cp pd4ml.jar ):

  • cos (com.pd4ml.pdf.cos, CLI: CosCli) - low-level PDF object model, parser, and writer. Inspect, query (COS-path), and edit any existing PDF's internal structure directly.
  • sign (com.pd4ml.pdf.sign, CLI: PdfSignCli) - digital signing: PKCS#12/PKCS#11/HSM/cloud KMS signers, timestamping, DocMDP certification, and PAdES-LT/LTV (long-term validation).
  • merge (com.pd4ml.pdf.merge, CLI: Pd4MergeCli) - combine page ranges from two or more PDFs into one, reconciling tagged (accessibility) structure across sources.
  • optimizer (com.pd4ml.pdf.optimizer, CLI: Pd4OptimizeCli) - shrink a PDF by dropping unreferenced objects, deduplicating identical content, and collapsing incremental-update history.
  • xfdf (com.pd4ml.pdf.xfdf, CLI: Pd4XfdfCli) - export/import annotations and form field values via XFDF (ISO 19444-1), for round-tripping review comments and form data with other PDF tools.
Bug fixed adapted all actual bugfixes from v4.0.23fx1 branch

2026-08-31v4.0.23fx1RELEASE v4.0.23fx1 is released and available for download
Bug fixed Extensive use of dotted borders in the document leads to an unjustified increase in the size of the resulting PDF file.
Improvement Added support for the CSS unicode-range descriptor, which specifies a particular range of characters to be used from a font defined via @font-face.
Bug fixed creation of unwanted duplicate font objects in the PDF if the font is used at different sizes.
Bug fixed possibility of incorrect text copy-pasting from PDF files using TTF font ligatures

2026-02-22v4.1.0RELEASE v4.1.0 is released and available for download
Improvement New API method pd4ml.setErrorPolicy() allows you to determine the reaction to occurrence of errors - always issue an exception or, if possible, ignore non-critical ones
Improvement Added support for cross-industry data formats ZUGFeRD and Factur-X for exchanging electronic invoice data.
Bug fixed adapted all actual bugfixes from v4.0.22 branch
Improvement Added support for output in compliance with selected PDF, PDF/A and PDF/UA standards.

2025-12-29v4.0.22RELEASE v4.0.22 is released and available for download
Bug fixed Auto-generated table of contents may disrupt the order of footnotes on pages.
2025-12-16v3.11.6fx2Bug fixed Empty hyperlink anchor tags (<a name="anchor_name">) that appear too close to a page break position may be not addressable for internal hyperlinks in the PDF file.
2025-12-05v4.0.22Bug fixed pd4ml.terminate() has no effect at some stages of document layout building
Improvement Optimized access to shared resources to eliminate potential deadlocks
2025-10-13v4.0.24Bug fixed RTF Background color of <body> tag is not applied / the padding of blocks with a background color is painted with the background, and inline elements with margins no longer reset the paragraph alignment. (HELPD-763)
2025-10-13v4.0.22Bug fixed RTF Mixed multi-level nesting of tables and lists can lead to inconsistencies in the document structure and loss of parts of the content.
Bug fixed Incorrect placement of internal destination anchors in a justified text paragraph, leads to broken hyperlinks in PDF files.
Bug fixed Incorrect column width balance in tables with overlapping colspans and mismatched widths.
Bug fixed small-caps and bold text styles applied to a single-character string can cause stack overflow
Bug fixed empty named HTML anchors <a name="destination"/> are not converted to addressable PDF local hyperlink destinations
Bug fixed RTF In some cases, page headers and footers might have incorrect text or background color

2025-08-17v4.0.21RELEASE v4.0.21 is released and available for download
Bug fixed uneven word spacing and unwanted line breaks are possible when using text-align: justify style
Bug fixed possible incorrect right edge alignment in rendering justified RTL content portions
Bug fixed NullPointerException when converting HTML containing fieldset with position: absolute
Bug fixed Fixed errors in handling ligatures of the Cambria Math font.
Bug fixed align=justify word spacing regression
Bug fixed RTF the display of the footer and header on the first (cover) page depends on the presence of each other
Bug fixed RTF implicitly created table cells may cause rendering issues with embedded images that are taller than the page size.
Improvement DOCX refined alignment of ordered list item labels
ImprovementThe update ends the separation between the jakarta and javax versions and adds intrinsic compatibility with both web application frameworks

2025-02-12v4.0.20fx3RELEASEv4.0.20fx3 is released and available for download
Bug fixed incorrect support of Symbol Character Set, used in decorative TTFs (symbol.ttf, wingdings.ttf etc)
2025-02-04v4.0.24Bug fixed In RTF output, an empty named anchor (<a name>) no longer creates a blank paragraph. (HELPD-673)
2025-02-04v4.0.20fx3Bug fixed RTF document layout may be corrupted in some cases if margin style is applied to a hyperlinked text fragment
Bug fixed inconsistent fallback font selection due to incorrectly configured TTF embedding
Bug fixed ClassCastException when conditional page break is in a list item. Conditional page breaks are now ignored during RTF and DOCX output as they cannot provide reliable results in these file formats.
Bug fixed NPE after forced clearing of font cache
Bug fixed Incorrectly applied line height to DOCX table cells
Bug fixed text-align: justify does not work correctly for right-to-left scripts
Improvement Added small-caps style support
Bug fixed A short document with a page header or footer no longer gets an extra page because its body was laid out with the full page height. (HELPD-674)
Improvement DOCX Improved logic for matching HTML paddings with DOCX indents/spacing / the top and bottom margins of <hr> are applied as paragraph spacing, so the space around horizontal lines matches the HTML. (HELPD-613)
Bug fixed Horizontal alignment of list items does not apply to inside-positioned bullets
Bug fixed Incorrect width of header and footer on rotated pages
Improvement The pageFormat="rotate" and pageFormat="reset" attributes of <pd4ml:page.break/> are supported when converting to DOCX

2024-10-28v4.0.20fx2RELEASE The release is identical to v4.0.20fx1. It only fixes a severe regression in the license validity checking logic. All v4.0.20fx1 users are recommended to upgrade.

2024-09-26v4.0.20fx1RELEASE v4.0.20fx1 is released and available for download
Bug fixed undesired line break before footnote/endnote index (rare cases)
2024-09-25v4.0.24Bug fixed In RTF output, icons from web fonts (private-use characters, e.g. inserted with ::before) are written as images and are visible in Word. (HELPD-656)
2024-09-25v4.0.20fx1Bug fixed margin: auto applied to IMG in table cell causing cell height to incorrectly increase
Bug fixed DOCX - Large footer top spacing
Bug fixed DOCX nested ordered list style is not correctly applied
Bug fixed DIVX issues with rendering nested center-aligned tables
Bug fixed lost whitespace after elements of display="none" type
Bug fixed RTF content style may be improperly propagated to adjacent elements
Improvement RTF support of sub- and super-script vertical alignment / In RTF and DOCX output, <sup> and <sub> text keeps its size and is raised or lowered as in browsers instead of being shrunk a second time by Word; RTF no longer adds a space after links. (HELPD-666, HELPD-611)
2024-09-14v4.0.24Bug fixed A page header, footer, watermark or background template written as a complete HTML document (<html><body>) is applied like a fragment, so its page scope (e.g. 3+,odd) is honored. (HELPD-649)
Bug fixed PDF pages and images from renderAsImages() no longer end with a blank page when only the body's bottom margin reaches into it. (HELPD-558)
2024-09-10v4.0.20fx1Improvement optimization of string content processing significantly improves the performance of converting larger documents
Bug fixed DOCX Too much spacing between footnotes
Bug fixed possible duplication of footnotes in some cases
ImprovementDOCX Document headings structure H1-H6 is now displayed in the navigation pane of Word processors.
Improvement DOCX ordered list numbering styles support
Bug fixed DOCX: left padding applied to ordered/unordered lists has no effect
Bug fixed list-style-type: none; on an <li> element with no text still creates an empty list item
Bug fixed potential deadlock condition eliminated
Bug fixed tags like <![if !vml]> or <![endif]> may break the resulting layout
2024-08-08v4.0.20fx1 v4.0.24Bug fixed page-broken textarea form field duplicated on next page Bug fixed: A textarea taller than a page is now split between its text lines, so no line is lost at a page break. (HELPD-647) Bug fixed: A textarea with a percentage width, min-width, max-width or height (for example style="width:90%") is now sized from its containing block as in browsers, instead of shrinking to a few pixels or to a fraction of its cols-based width. (HELPD-647)
2024-08-08v4.0.20fx1Bug fixed Using unsupported CSS functions (i.e. var()) in length/size properties may cause ClassCastException
Bug fixed percentage paddings use incorrect calculation base, which results in incorrect layout
Bug fixed vertical and horizontal alignment issues of multi-nested flex boxes

2024-06-17v4.0.20RELEASE v4.0.20 is released and available for download
Bug fixed UTF32 surrogate pairs in input HTML cause resulting DOCX to be corrupted
Bug fixed DOCX Incorrectly applied justify alignment for text preceding a table
Improvement eliminated concurrent access to some cached data for performance and stability reasons
Bug fixed possible invalid table cell padding before rowspanned cells
Bug fixed partially missing table border for rowspanned cells in DOCX
Bug fixed footnote/endnote label may erroneously inherit the width style from its parent element
Bug fixed implicit page breaks on a list item may cause visual artifacts
Bug fixed text-indent CSS property may have no effect
Improvement support of image url in content property of ::before CSS pseudo-element
Bug fixed DOCX undesired line break if <p> tag is nested to the <li> tag
Improvement Supports EXIF orientation of JPEG images

2024-04-15v4.0.19fx1RELEASE Maintenance v4.0.19fx1 is released and available for download
Improvement DOCX: SVG images support
Bug fixed incorrect inheritance and combining of underline and line-through text decoration CSS styles
Bug fixed footnotes text alignment undesirably inherited from the referenced content
Bug fixed noref Footnotes may be placed on the wrong page
Bug fixed dots in TOC not rendered [pdf]
Bug fixed incorrect percent width balancing of colspanned table columns
Bug fixed horizontal alignment is not applied to DOCX table cells
Improvement DOCX output: sub/superscript alignment support; dots in TOC
Improvement support of footnotes and endnotes in DOCX
Bug fixed DOCX: table row background color is not applied

2024-02-19v4.0.19RELEASE v4.0.19 is released and available for download
2024-02-17v4.1.0Improvement increased tolerance of the PDF parser to document encryption errors (HELPD-578)
2024-02-16v4.0.19Bug fixed ignore spaces between CSS lengths and units for backwards compatibility with v3
2024-02-16v4.0.24Bug fixed Table rows that only start a rowspan cell are no longer grown to the whole span height, which added large blank areas to tables. (HELPD-568, HELPD-574) Bug fixed: Extra height needed by a row-spanning table cell (rowspan) now goes to the spanned rows in proportion to their heights, as in browsers, so a label row holding only the spanning cell no longer grows. (HELPD-573)
2024-02-15v4.0.19Improvement Added support for header and footer images and hyperlinks for DOCX output.
Bug fixed Nested table layout with mixed content is broken by RTF conversion
Bug fixed Text underline thickness depends on parent block border width
Improvement New Feature: DOCX file format output support
Bug fixed incorrect collapsed table dashed/dotted border style inheritance; dashed and dotted lines rendering refined
Bug fixed empty table cells can allocate horizontal space / CSS keyword values are matched case-insensitively, so e.g. text-align: Center centers the text. (HELPD-572)
Bug fixed ability to use a decorative symbol font as a fallback font for regular content
Bug fixed occasional truncated data on page breaks in multi-level nested tables
Improvement rounded rectangle borders / backgrounds placement refined in PDF output

2023-12-20v4.0.18RELEASE v4.0.18 is released and available for download
Bug fixed incorrect <tr> padding handling causes duplicated table cell borders / In tables with border-collapse: collapse, a border set on <tr> is no longer drawn as a doubled line between rows and at the bottom. (HELPD-563)
Bug fixed <iframe> in a table cell may cause a class cast exception
Improvement support for individual font face and color settings for created PDF form fields / PDF form fields use the inherited font-family (including inherit and font lists), and the field font is registered in the form's font resources. (HELPD-559)
Bug fixed incorrect table row width balancing in a case of inconsistent table structure
Bug fixed incorrect processing of <title> if it appeared in <body> / Invisible characters (zero width spaces, bidi marks, byte order mark) are no longer printed as ?, and special space characters are drawn as spaces. (HELPD-560, HELPD-693)
Bug fixed Parentheses or punctuation marks within a word should not be considered a possible position for line breaks

2023-09-06v4.0.17RELEASE Maintenance v4.0.17 is released and available for download
Bug fixed Non-breaking space &nbsp; is breaking if preceded by punctuation
Improvement External entity injection protection in the SVG handler
Bug fixed online WOFF and WOFF2 font files loaded twice
Bug fixed max-width property may cause incorrect auto margins calculation
Bug fixed table may not stretch horizontally properly if the width of all table columns is specified as a percentage
Bug fixed Trailing blank PDF page is not always removed by default / A trailing blank page is no longer added when only the edge of a box's background or border ends exactly at the top of that page. (HELPD-553)
Bug fixed CSS 'clear' property does not take precedence over 'float' / Zero-height floats (e.g. clearfix elements) no longer take horizontal space, so floated label/value pairs are not staggered onto separate lines. (HELPD-553)
Improvement eliminate unwanted second parsing pass in special cases (significant performance improvement for large documents)
Bug fixed absolute positioning style applied to <br> cause ClassCastException
Bug fixed inconsistencies in HTML/CSS document structure included by <iframe> can break style of the main document

2023-05-23v4.0.16RELEASE v4.0.16 is released and available for download
Improvement PDF parser: skip leading garbage bytes in damaged PDFs
Improvement rendering performance optimization for multi-nested tables
Bug fixed .DAT files can remain in the TEMP directory for a very long time if the application has not been restarted in the meantime
Bug fixed CSS descendant selectors don't match if class attribute ends with whitespace
Bug fixed @font-face font alternatives are not used if one of the specified fonts fails to load or has an unsupported format
Bug fixed Japanese double space character ignored or rendered incorrectly
2023-03-14v3.11.5fx5Bug fixed regression: line breaks can mistakenly break words after umlauts
2023-03-10v4.0.16Bug fixed by collapsed table borders row background overlaps cells content
Bug fixed recursive loading of <iframe>s
Bug fixed corrupted GIF image with negative dimensions causes NPE
Bug fixed purged from the file cache and not properly restored WOFF font file causes NPE
Bug fixed infinite loop in flex layout under special combination of rendering conditions
Bug fixed page CropBox is not taken into account by PDF overlay/underlay
2023-02-21v4.0.24Bug fixed Text that Java's layout engine shapes with invisible glyphs (e.g. Malayalam conjuncts on JDK 8, direction marks with ligatures enabled) no longer crashes the font subsetting with an ArrayIndexOutOfBoundsException. (HELPD-473)
2023-02-21v4.0.16Improvement woff2 file format support added; woff format support updated
Bug fixed depending on the internal page hierarchy, PD4ML may not return inherited size or media box dimensions of a PDF page.

2023-02-01v4.0.15fx2RELEASE v4.0.15fx2 is released and available for download
2023-01-21v3.11.4fx6Bug fixed relative font size could be applied twice to heading tags <H1>, <H2> etc
2023-01-03v4.0.15fx2Bug fixed nowrap table cell style is not applied to nested elements
Bug fixed direction: RTL style takes no effect because of uppercase
Bug fixed not always correct auto width calculation of absolute positioned blocks
2022-11-11v4.0.9fx5Improvement tb-rl writing mode supported
2022-11-11v4.0.15fx2Bug fixed output of multiple blank pages if the document has a table whose header and the first row are taller than the page.
Improvement new landscape option for page orientation change without header and footer rotation: <pd4ml:page.break pageFormat="A4,landscape">
2022-10-23v4.0.15fx1Improvement Special Tomcat10/Servlet5.0/JSP3.0 compatibility build published

2022-10-12v4.0.15fx1RELEASE v4.0.15fx1 is released and available for download
Bug fixed corrupted RTF layout of multi-nested tables if the most nested cell contains an image
Bug fixed floating block horizontal space allocation issue
Bug fixed performance issues when converting huge HTML to RTF
Bug fixed corrupted table layout if table header height greater than page height

2022-09-07v4.0.15RELEASE v4.0.15 is released and available for download
Bug fixed various minor mixed RTL/LTR word order flaws
Bug fixed wrong mixed RTL and LTR word order in PDF form fields
Bug fixed embedded image height in RTF output is limited to 90% of page height to avoid MS Word rendering visual errors
Improvement text-overflow: ellipsis CSS style support added
Bug fixed trailing blank pages not always suppressed
Bug fixed regression: <base> tag takes no effect
Site better search results representation and target page linking
2022-06-27v4.1.0 v4.0.15Improvement SVG text path support
2022-06-23v4.1.0Improvement all recent changes and bugfixes merged from v4.0.14 branch to v4.1.0 branch

2022-06-21v4.0.14RELEASE v4.0.14 is released and available for download
Improvement SVG <text> and <tspan> alignment logic refactored
Improvement multiple PDF parser and PDF merge/overlay module updates
Bug fixed auto-generated page numbers may appear rendered incomplete under some conditions
Bug fixed page number in complex header/footer layouts is not fully rendered
Improvement support of HTML code in dynamic params

2022-04-14v4.0.13fx2RELEASE v4.0.13fx2 is released and available for download
Improvement PD4ML_SOCKET_TIMEOUT parameter support

2022-03-31v4.0.13fx1RELEASE v4.0.13fx1 is released and available for download

2022-03-06v4.0.13RELEASE v4.0.13 is released and available for download
2022-03-06v4.0.13fx1Improvement conditional page break logic refined
2022-02-24v4.0.13Bug fixed PNGs embedded in RTF are not always displayed
Bug fixed table borders misaligned by a specific combination of CSS properties
Bug fixed hidden input elements may allocate space
Improvement footnotes management logic refactored
Bug fixed printed long URLs are not line-breakable

2022-02-07v4.0.12RELEASE v4.0.12 is released and available for download
Bug fixed mismatch of default page margins in PD4ML v3 and PD4ML v3 -> v4 API wrapper
Bug fixed list item bullet/number is not rendered if <li> content is page-broken

2021-12-30v3.11.5fx1RELEASE v3.11.5fx1 is released and available for download
Bug fixed regression: bold font style emulation may not work in some configurations
Improvement various CJK TTF font substitution logic improvements
2021-12-16v4.1.0 v4.0.11Bug fixed conditional page breaks may take no effect
Bug fixed regression: broken support of grayscale PNG
2021-11-28v4.1.0Improvement AES_128BIT and AES_256BIT PDF encryption support added. New default is AES_128BIT
2021-11-18v4.0.11Improvement font size support in PDF form text fields

2021-11-16v4.0.10RELEASE v4.0.10 includes the recent bugfixes of v4.1.0 branch
Bug fixed trailing chars of header/footer text are cut
2021-09-30v4.1.0 v4.0.10Bug fixed fails to read kerning tables of built-in core fonts (due to classloader oddities in certain JVM environments)
Bug fixed start attribute of <ol> takes no effect
Bug fixed setDynamicParams() of PD4ML v3 API wrapper does not propagate cache control directives to PD4ML v4 API layer.
Bug fixed incorrect SVG scaling if width and height attribute values are given in percents
2021-06-13v4.1.0 v3.11.4fx6 v4.0.10Bug fixed wrong mixed Arabic / English word order
2021-06-08v4.1.0 v4.0.10Bug fixed scope=1 atribute of <pd4ml:page.footer> may cause content and footer on the first page to overlap

2021-04-27v3.11.4fx5RELEASE v3.11.4fx5 is released and available for download

2021-04-27v4.0.9fx5RELEASE v4.0.9fx5 is released and available for download
Bug fixed regression: incorrect vertical alignment of page-broken nested tables
Bug fixed <thead> replication of a page-broken table may cause PDF/UA validation warning
Improvement refined footnotes rendering logic
Bug fixed regression: incorrect calculation of percent image width
2021-04-07v3.11.4fx5Bug fixed HTML entities in HREF attribute are not replaced with escaped characters
2021-04-05v3.11.4fx5 v4.0.9fx5Bug fixed possible name clash of embedded fonts by PDF document merge.
2021-04-03v4.0.9fx5Bug fixed footer may partially overlap content on the first page
Improvement basic support for CSS media queries added (max-width, min-width etc)
Improvement Flex layout generation performance optimization
Bug fixed trailing blank page removal logic fix (some pages may be mistaken for blank if they only contain images and no other content)
Improvement CSS runtime performance optimization
Bug fixed enableHyperlinks(false) erroneously disables internal PDF links creation; an external PDF link created even if the target URL matches the document base
2021-03-02v3.11.4fx5 v4.0.9fx5Bug fixed an occurrence of an invalid @media selector can skip the rest of the stylesheet

2021-03-01v4.0.9fx4RELEASE v4.0.9fx4 is released and available for download
Bug fixed a clash of automatic and forced page breaks may cause a generation of a blank page
Bug fixed automatic page break logic does not take into account block paddings, and under some conditions, the background of the bottom margin is carried over to the next page
Bug fixed regression: table not rendered after a page break
Bug fixed NPE when rendering table/tr with display:none style
Bug fixed TR background may be printed below page break logical position

2020-11-30v4.0.9fx3RELEASEv4.0.9fx3 is released and available for download

2020-11-30v3.11.4fx4RELEASEv3.11.4fx4 is released and available for download
2020-11-28v4.0.9fx3Bug fixed Page background does not cover the entire page
Improvement getDocumentTitle() API method added
2020-11-23v3.11.4fx4Bug fixed PDF parser issue
2020-11-17v4.0.9fx3Bug fixed Ordered lists in RTF numbered wrongly
Bug fixed Scope "skiplast" is not working with header/footer tags
2020-09-08v4.0.9fx1Bug fixed CSS calc() malfunction
Bug fixed Corrupted PDF output for some locales (e.g. nb_NO) under OpenJDK v10.0+
Improvement Automatic substitution of 0x7F - 0x9F character range, rarely supported by TTF/OTF, with Unicode equivalents
Bug fixed Content cut after <text> under special conditions
Bug fixed Wrong height of empty table cells
Bug fixed <legend> tag is not rendered if its parent <fieldset> occupies more than one page

2020-08-16v4.0.9RELEASE v4.0.9 is released and available for download
Bug fixed Table cell attribute nowrap="" (with a blank string as a value) takes no effect
Improvement if there is no CJK font of requested family and style to render a content portion, as "the last resort" it looks for a capable one among all available TTF/OTF fonts.
Bug fixed table cell inproperly inherits text alignment style from the table parent
Improvement Added protectPhysicalUnitDimensions(boolean) method, known in PD4ML v3 API.
Improvement Absolute positioning logic refactored to support complex document tag structures

2020-06-08v4.0.8RELEASE v4.0.8 is released and available for download
Bug fixed broken/invalid PNG ICC color profile may result corrupted PDF output
2020-06-05v4.0.8 v3.11.5Improvement revised conditions for emulating italics and bold in a case of unavailability of the necessary fonts
2020-05-19v4.0.8Bug fixed invalid minimal width calculation by word-break: break-all;
Improvement CSS cascading engine performance optimization
Improvement Support of "word-break: break-word" style, despite it is deprecated
2020-04-26v3.11.4Improvement Font size accuracy in "protect physical unit dimensions" mode
2020-04-20v4.0.8Improvement Table row heights balance logic improved (for intersecting rowspans)
Bug fixed Font indexer may refer to an invalid .TTC collection index
Bug fixed NPE if terminate() API called before readHTML()
Improvement caching logic updates; cache disabling with pd4ml.cache.enable=false runtime property is possible again
Improvement HTML rendering engine refactoring to achieve a better handling of implicit element sizes
Bug fixed abs positioned elements: page break logic issues

2020-01-09v3.11.3RELEASE v3.11.3 is released and available for download

2020-01-01v4.0.7RELEASE v4.0.7 is released and available for download
Improvement <pd4tl:header> and <pd4tl:footer> tags added to PD4ML taglib v4 for backward compatibility
Bug fixed table cell content centering issues (very special cases)
Bug fixed percentual min-height in header/footer may corrupt PDF page layout in some cases
Bug fixed documents not always watermarked when PD4ML is in evaluation mode
Improvement font kerning logic refinements
Bug fixed missing character entities by SVG text rendering
Bug fixed incorrect handling of soft hyphens (&shy;)
Bug fixed PDF/A-1b spec compliance regression
Improvement rowspanned table cells page break logic refinements
Improvement better error workarounds by a merging of corrupted/inconsistent PDFs
Improvement removes trailing blank pages (if any) from resulting documents
Improvement reusing of available font files created/stored in TEMP directory by previous conversion requests
Bug fixed Overridden Producer document property does not match XMP metadata
2019-11-02v4.0.6fx4Improvement Page break logic refinements for table cells spanning more than one page break
2019-10-28v4.0.6fx3Bug fixed Element positioning issues of the built-in SVG renderer
2019-10-24v4.0.6fx1 v3.11.2Bug fixed RTF output: minor layout rendering flaws

2019-10-19v4.0.6RELEASE v4.0.6 is released and available for download
Improvement Added flex layout support
2019-09-30v3.11.1fx1 v4.0.6Improvement Embedding performance optimization for big inline base64-encoded attachments
2019-09-25v4.0.6Bug fixed PDF form generation fails if radio input field shares the same name with inputs of other types
Bug fixed Rendering issue of table cells spanning more than one page break
Bug fixed incorrect scaling of SVG under some conditions
Improvement pd4ml.setParam(Constants.PD4ML_GENERATE_TOOLTIPS, "true") API call forces generation of PDF tooltips
Improvement pd4ml.enableHyperlinks(boolean enable) method functionality implemented
Bug fixed Misplaced textarea background. Incorrect textarea white space processing.
Improvement Implements pd4ml.setRenderingHints(Map hints) API method to control rendering algorithms by image output.
Improvement Supports parametrized page breaks to change target PDF page format and scale factor on-a-fly
Improvement Adds support for conditional page breaks: <pd4ml:page.break ifSpaceBelowLessThan="50px">
Bug fixed Rendering issue of special characters with Type1 fonts
Improvement Applying proprietary data-rtf-convert: wmf style to an image forces it to be converted to WMF format by RTF output
Bug fixed HTTPS compatibility issues with JDK 10 and newer
Bug fixed :nth-child(odd) pseudo style may override :nth-child(even)
Bug fixed A presence of SVG objects in a table cell may corrupt table border output. The issue impacts only HTML-to-Image conversion
Bug fixed Invalid positioning of floats nested to floats
2019-09-01v3.11.1fx1Improvement v3 is compatible with JDK 1.3 again.

2019-08-26v4.0.5RELEASE v4.0.5 is released and available for download

2019-08-26v3.11.1RELEASE v3.11.1 is released and available for download
2019-08-17v4.0.5Bug fixed Occaional lost of a text line by an implicit page break (under special conditions)
Improvement Multi-threaded resource loading
Bug fixed Incorrect content scaling by adjustHtmlWidth=true
Bug fixed Under some conditions page-break-before: always takes no effect
Bug fixed $[page] and $[total] placeholders not always substituted if the header/footer has international text content
Bug fixed "background-position: center" takes no effect by "background-size: contain"
Bug fixed Applying of PDF permissions implicitly sets document password

2019-06-18v4.0.4RELEASE v4.0.4 is released and available for download

2019-06-12v3.11.0RELEASE v3.11.0 is released and available for download
2019-06-07v3.11.0 v4.0.4Improvement New API method PD4ML.applyKerning(boolean)
2019-06-06v4.0.4Bug fixed Issues by loading of TTF/OTF fonts from JAR file
Improvement Multiple PDF/UA output refinements and minor bugfixes
2019-05-31v3.10.9fx5 v4.0.4Improvement RTF conversion performance optimization
2019-05-30v4.0.4Improvement HTML metadata from <meta> tags is used to set PDF's Subject, Keywords and Author properties.
Improvement Product source code aligned for backward JDK1.7+ compatibility
Bug fixed Evaluation watermark appearance makes PDF hyperlinks inactive
Bug fixed auto page break logic flaws (by tables with rowspanned cells)
2019-05-17v3.10.9fx4 v4.0.4Bug fixed Exception by merging of PDFs exported from Crystal Reports
Bug fixed rowspanned empty table cells may corrupt RTF document integrity

2019-05-06v4.0.3RELEASE v4.0.3 is released and available for download
Bug fixed inconsistent PDF tagging of watermarks by PDF/UA output
Improvement Implicitly groups leading table rows with <th> cells to <thead> section (if no other table section specified)
Bug fixed incorrect tagging of row/colspanned table cells by PDF/UA output
2019-04-27v3.10.9fx3Improvement cedilla diacritic glyphs support for not Unicode3.0-compliant font "Arial Unicode MS"
2019-04-27v4.0.3Bug fixed undesired blank space after some Type1 (non-TTF) font glyphs
2019-04-25v3.10.9fx3 v4.0.3Improvement Arabic lists support by RTF output; RTF lists output refinements
2019-04-09v4.0.3Bug fixedTable header replication issues in a nested table context
Bug fixed corrupted TOC style
Bug fixed Image format output: incorrect positioning of watermarks
Bug fixed <hr> CSS transform and alignment issues
Bug fixed box rounded corners minor rendering issue
Bug fixed misplaced span background fill in "text-align: justify" mode
Improvement CSS transform (rotate, scale, skew etc) supported

2019-03-07v4.0.2RELEASEv4.0.2 is released and available for download
Improvement RTL script (Arabic, Hebrew) support added
Bug fixedBuilt-in SVG renderer: Rotated graphics context is not inherited by nested elements
2019-02-14v3.10.9fx1Improvement default TTF font (if specified and exists) takes precedence over built-in Type1 PDF viewer fonts
2019-02-01v4.0.2Improvement added a possibility to embed extra TTF font glyph ranges into resulting PDF (e.g. to cover possible PDF form input).
Improvement Multi-threading stability tweaks.
Bug fixed SVG image may appear blank in PDF if "overflow: hidden" style is applied to its parent block element.
Improvement Support of MathML rendering when Jeuclid library is in the classppath
Improvement Apache Batik is supported as an optional plugable SVG renderer

2019-01-16v3.10.9RELEASE v3.10.9 is released and available for download
2019-01-16v3.10.9fx1Bug fixed UTF32 characters copy/paste (from PDF) error
2019-01-15v3.10.9Bug fixed default font changed to Arial for backward compatibility with older versions
2019-01-15v3.10.9 v4.0.2Improvement 4byte (UTF32) character support added. Minor CJK rendering issues fixed.
2018-12-31v4.0.2Improvement <XMP> HTML tag supported

2018-12-31v4.0.1RELEASEv4.0.1 is released and available for download
Improvement PDF/UA (and PDF/A-2a) support added
Bug fixed Logical width of colspanned cell wrongly applied by table layout calculation

2018-11-28v3.10.8RELEASE v3.10.8 released and available for download
Improvement bottom-top text orientation support with writing-mode: vertical-lr; transform: rotate(-180deg);
2018-11-26v4.0.1Site Issue submit form added.
Site Release notes viewer added
2018-11-18v3.10.8 v4.0.1Bug fixed colons and dots in CSS function name makes style parser to break
2018-11-10v4.0.1Site Updated version of PD4ML v4 reference manual published
Bug fixed PD4ML v3 API Wrapper incorrectly overrides document encoding
Improvement New -gui flag for Pd4Cmd
Bug fixed Watermark misplaced by image output
Bug fixed Activation code reading bug (affected by whitespaces)
2018-09-03v4.0.0Site Supported HTML tags page added
Site Supported CSS properties page added

2018-08-03v4.0.0RELEASE v4.0.0 released and available for download
Improvement SVG images can be converted directly, without a parent HTML
Improvement PD4ML implements a check for license file (pd4ml.lic) in the classpath (e.g. in the root folder of JAR files), if it has not been found in the working directory.
Improvement useTTF() name filter parameter added. With the parameter specified, PD4ML performs auto-index only for TTF files, whose names match a given pattern.
Improvement Lightweight SVG renderer built in. External SVG engine (Batik) is going to be supported as a plugin by v4.0.2

 

447 (cached 2026-10-18 23:11)