pdfHTML is an iText Core add-on for creating PDF from HTML/XML (and associated CSS).
For this release we took the opportunity to reflect the improved Well-Tagged PDF (WTPDF) creation in iText Core 9.6.0 to enable WTPDF conformance support in pdfHTML. We also added support for one CSS pseudo-class, and improved the implementation of another, along with some more minor refinements and bug fixes.
As noted in the Mozilla Developer Network documentation, the :has() pseudo-class matches an element when the selector inside finds a match relative to that element. In simple terms can be called a “parent selector”, as it allows you to style a parent (or even an element that comes before another) based on what it contains or comes after it.
We actually added this to help with the release-notes-to-pdf generator we recently open-sourced, as we found it would be useful when referencing the table of contributors to a specific release version. Hopefully someone else will find it useful too!
The other pseudo-class is the :not() selector for the @page at-rule. You can now specify @page :not(:first) to apply styles to all pages except the first page, whereas before it behaved incorrectly.
We’ve refactored how pdfHTML handles dependency injection, related to the changes to make StampingProperties and DocumentPropertiesstateless in iText Core 9.6.0:
ConverterPropertiesnow stores dependency suppliers instead of dependency instances, and new methods to access dependency classes and retrieve a dependency’s supplier have been introduced.ProcessorContextwas updated to register dependencies using the new supplier-based API, while the oldgetDependencies()API is now marked as deprecated and returns fresh instances created via suppliers.
An issue with positioning of elements (such as list items) being lost when the block is split across pages was resolved, along with an issue with HTML tables using collapsed borders with large rowspans that overflow/split onto a new page.
Bug Fixes
- DEVSIX-9700 – Support css :has pseudo class
- DEVSIX-9767 – Add WTPDF creation using pdfHTML
Improvements
- DEVSIX-9613 – Make DocumentProperties/StampingProperties stateless
Bug Fixes
- DEVSIX-2431 – Positioned elements (e.g. absolute positioning) are lost when block is split across pages
- DEVSIX-5036 – Original rowspan is restored while overflowing to the next page
- DEVSIX-9715 – Absolutely positioned elements can be dropped when parent block-element is split across pages.
- DEVSIX-7094 – Page selector is applied even though :not is specified