2026-10-18v4.2.0 v4.0.24Improvement 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

 

80 (cached 2026-10-18 15:39)