# PD4ML Compared with Other HTML-to-PDF Libraries

Choosing a Java HTML to PDF library comes down to four questions: how faithfully it lays out your HTML and CSS, which PDF standards it can produce (PDF/A, PDF/UA, ZUGFeRD), which other formats you need besides PDF, and what the license costs over time. This page compares PD4ML with the libraries teams most often evaluate alongside it: iText with pdfHTML, PDFreactor, Aspose.HTML for Java, BFO Publisher and Report Generator, and the open-source OpenHTMLtoPDF.

The comparison covers PD4ML v4.1.1 and, marked {4.2}, features of the upcoming PD4ML 4.2 with its new v42 layout engine. Competitor information comes from their public documentation and price lists as of November 2026; a cell marked "not verified" means we could not confirm it from public sources, not that the feature is missing.

## At a glance

* **PD4ML** is a pure-Java layout engine with no browser, no native code and no rendering service. One parse writes PDF, DOCX, RTF and images. Licenses are perpetual, one-time fees from €100.
* **[iText with pdfHTML](https://itextpdf.com/products/pdfhtml)** converts HTML into iText's layout objects. It is a large PDF toolkit, dual-licensed under AGPL or a commercial subscription quoted per customer.
* **[PDFreactor](https://www.pdfreactor.com/)** is a commercial HTML-to-PDF server and library with a JavaScript engine and deep CSS Paged Media support, sold as an annual subscription.
* **[Aspose.HTML for Java](https://products.aspose.com/html/java/)** is an HTML processing toolkit with a W3C DOM, scripting and conversion to PDF, XPS, DOCX and images.
* **[BFO Publisher](https://publisher.bfo.com/)** is a pure-Java CSS layout engine for HTML and XML; **[BFO Report Generator](https://bfo.com/products/report/)** is BFO's older XML-based report engine.
* **[OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf)** is a free, LGPL fork of Flying Saucer that renders XHTML and CSS 2.1 to PDF through Apache PDFBox.

## PD4ML vs. iText, PDFreactor, Aspose, BFO and OpenHTMLtoPDF: licensing and price

List prices without VAT. iText and BFO's external and OEM licenses are quoted per customer; the figures below are reference points.

| Item | PD4ML | [iText + pdfHTML](https://itextpdf.com/how-buy) | [PDFreactor](https://www.pdfreactor.com/pricing/) | [Aspose.HTML Java](https://purchase.aspose.com/pricing/html/java/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help/license.html) | [OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf/blob/main/LICENSE) |
|---|---|---|---|---|---|---|
| License model | Perpetual, one-time fee | AGPL or commercial subscription (quote) | Annual subscription | Perpetual, 1 year of maintenance | Perpetual per server (internal), subscription (external) | LGPL 2.1, free |
| Entry price | €100 (STD), €220 (UA, accessible PDF) | Not published; reported median ≈ $17,600 per year | Pro $1,908 per year | $979 (1 developer, 1 location) | Report Generator $1,617, Publisher $3,430 per server | Free |
| Unlimited deployments | Site €1,600–3,200, Enterprise €8,000–16,000 | Volume-based quote; reported ≈ $7,300–32,700 per year | Premium $4,788, Cluster $15,588 per year | Site Small Business $4,895; OEM tiers higher | Unlimited license on request (annual) | Free |
| Source code license | ✓ Site €6,000–8,000, Enterprise €30,000–35,000 | ✓ Open source (AGPL) | — | — Escrow only | — | ✓ |
| Free evaluation | All features, watermarked output | 30-day trial or AGPL | Evaluation license; free personal license | Temporary license | Fully functional demo | Not needed |

See [PD4ML editions and prices](https://pd4ml.com/products/) for what each edition (STD, PRO, DMS, UA) includes.

## Rendering engine and architecture

| Feature | PD4ML | [iText + pdfHTML](https://kb.itextpdf.com/itext/chapter-1-hello-html-to-pdf) | [PDFreactor](https://www.pdfreactor.com/product/doc_html/manual-ws.html#Integration) | [Aspose.HTML Java](https://docs.aspose.com/html/java/getting-started/features-list/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help#_introduction) | [OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf) |
|---|---|---|---|---|---|---|
| Rendering engine | Own print-focused engines: v40 (default) and v42 (Chrome-verified layout) | Own CSS parser feeding iText layout objects | Own engine | Own engine, "headless browser" model | Own CSS layout engine | Flying Saucer fork |
| HTML parser | ✓ Tolerant HTML5 parser; honours `<meta charset>` {4.2} | ✓ jsoup-based | ✓ HTML5 and XML | ✓ HTML5 and XHTML | ✓ HTML5 (repairing) or strict XML; RG: XML only | ~ Well-formed XHTML; HTML5 through a jsoup adapter |
| XML with XSLT input | ✓ | — | ✓ | ~ XHTML only | ✓ XSLT and XInclude | — |
| JavaScript execution | — No script engine; PDF document actions only | — | ✓ Canvas, chart libraries, MathJax | ✓ | ? | — |
| DOM API before conversion | ✓ `getDocument()`: selectors, `innerHTML`, attributes {4.2} | ~ Tag workers, CSS appliers, `convertToElements()` | ~ Through JavaScript | ✓ W3C DOM, XPath, CSS selectors | — | ~ Accepts a W3C DOM |
| Layout read-back | ✓ `layout()`: element boxes per page, computed style {4.2} | — | ? | ? | — | — |
| Parse once, write many formats | ✓ PDF, DOCX, RTF and images from one parse | — | ? | ~ Load once, convert per format | ? | — |
| Minimum Java | Java 8 (TIFF output Java 9) | Java 8 | Current JRE | Separate builds per JDK | Current JRE | Java 8 |
| Dependencies | Single jar plus Bouncy Castle | iText Core modules | Bundled | Large single jar | Few third-party libraries | PDFBox plus plugin libraries |

PD4ML's [two-phase model](https://pd4ml.com/docs/pd4ml-manual.html#6.1-the-two-phase-model) reads and lays out a document once and writes it to several formats. With PD4ML 4.2 the parsed document can be [read and changed before conversion](https://pd4ml.com/docs/features/modifying-the-html-document-before-conversion.html).

## HTML and CSS layout support

| Feature | PD4ML | [iText + pdfHTML](https://kb.itextpdf.com/itext/what-features-are-supported-or-unsupported-in-pdfh) | [PDFreactor](https://www.pdfreactor.com/product/doc_html/manual-ws.html#CSSSupport) | [Aspose.HTML Java](https://docs.aspose.com/html/java/css-extensions/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help#_appendix_b_properties) | [OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf/wiki/Big-CSS-reference) |
|---|---|---|---|---|---|---|
| Flexbox | ✓ | ✓ Including vertical pagination | ✓ | ? | ✓ | — |
| CSS Grid | ✓ Template areas, line names, dense placement {4.2}: 3,609 of 3,758 WebKit grid tests pass | ~ No `subgrid` or `inline-grid` | ✓ | ? | ? | — |
| CSS @page | ✓ Size, `:first`/`:left`/`:right`/`:blank`, named pages, 16 margin boxes {4.2} | ✓ | ✓ Full GCPM | ~ | ✓ | ~ Page boxes, running elements |
| Running headers and page numbers | ✓ HTML headers and footers with `$[page]` of `$[total]`; `counter(page)` in margin boxes {4.2} | ✓ Running elements, `target-counter` | ✓ | ~ | ✓ | ~ |
| Different page sizes in one document | ✓ Page scopes like `"2+"` or `"3-7,odd"` | ✓ | ✓ | ~ | ✓ | ✓ |
| Multi-column pages | ✓ | ✓ | ✓ | ? | ? | — |
| Widow and orphan control | ✓ | ✓ | ✓ | ~ | ✓ | ✓ |
| Media queries | ✓ Level 4 range syntax, nested `@media` {4.2} | ✓ | ✓ | ✓ | ? | ~ |
| Vertical writing modes | ✓ {4.2} | ? | ✓ | ? | ? | — |
| Vector SVG | ✓ Built-in renderer | ✓ | ✓ | ✓ | ✓ | ✓ Batik plugin |
| MathML | ✓ | — | ✓ | ? | ✓ | ✓ Plugin |
| Image maps | ✓ `<area>` regions become links {4.2} | ? | ? | ? | ? | — |
| Canvas, iframe, video | — Shown as a labelled box | — | ✓ Canvas | ~ | ~ | — |
| Fit a document onto one page | ✓ | — | ? | ? | ? | — |

For tag-by-tag details see the [PD4ML v42 HTML5 element support matrix](https://pd4ml.com/docs/html5-element-support-matrix.html) and [PD4ML's proprietary CSS properties and tags](https://pd4ml.com/docs/features/pd4ml-proprietary-css-media-types-properties-and-tags.html).

## Output formats: PDF, DOCX, RTF and images

| Feature | PD4ML | [iText + pdfHTML](https://kb.itextpdf.com/itext/chapter-1-hello-html-to-pdf) | [PDFreactor](https://www.pdfreactor.com/product/doc_html/manual-ws.html#outputFormats) | [Aspose.HTML Java](https://docs.aspose.com/html/java/converting-between-formats/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help#_pdf_output) | [OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf/wiki/Java2D-Image-Output) |
|---|---|---|---|---|---|---|
| PDF | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| DOCX (Word) | ✓ Editable text boxes, native SVG and form controls {4.2} | — | — | ✓ | — | — |
| RTF | ✓ | — | — | — | — | — |
| Raster images | ✓ PNG, TIFF, multi-page TIFF | — | ✓ | ✓ JPG, PNG, BMP, TIFF, GIF | ✓ | ✓ |
| Other formats | — | — | — | ✓ XPS, Markdown, MHTML | ✓ Multi-page SVG | — |

Among the libraries compared, PD4ML is the only one that writes both [DOCX and RTF](https://pd4ml.com/docs/features/rtf-and-docx-output.html) from the same layout as the PDF. See also [HTML to raster image conversion](https://pd4ml.com/docs/features/html-to-raster-image-conversion.html).

## PDF/A, PDF/UA and e-invoicing standards

| Feature | PD4ML | [iText + pdfHTML](https://kb.itextpdf.com/itext/new-high-level-html-to-pdf-ua-api) | [PDFreactor](https://www.pdfreactor.com/product/doc_html/manual-ws.html#PDFAConformance) | [Aspose.HTML Java](https://reference.aspose.com/html/java/com.aspose.html.saving/pdfsaveoptions/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help#_pdfa_pdfua_and_pdfx) | [OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf/wiki/PDF-A-Standards-Compliance) |
|---|---|---|---|---|---|---|
| PDF version control | ✓ PDF 1.4 to 2.0, ISO 32000-1 extension levels 1–11 | ✓ Up to 2.0 | ✓ | ? | ✓ Including 2.0 | ~ |
| PDF/A archiving | ✓ PDF/A-1a/1b, 2a/2b/2u, 3a/3b/3u, 4, 4e | ✓ | ✓ PDF/A-1 to PDF/A-3 | ~ Through Aspose.PDF | ✓ PDF/A-1 to PDF/A-4 | ✓ |
| PDF/UA-1 accessible PDF | ✓ Headings, lists, tables, links, images; SVG as Figure, MathML as Formula, `<th>` scope {4.2} | ✓ | ✓ | ~ Through Aspose.PDF | ✓ | ✓ |
| PDF/UA-2 on PDF 2.0 | ✓ | ? | ? | ? | ? | — |
| PDF/A and PDF/UA combined | ✓ For example PDF/A-3a with PDF/UA-1 in one call | ✓ | ✓ | ? | ✓ | ? |
| ZUGFeRD and Factur-X | ✓ Presets, including accessible PDF/A-3a invoices | ~ PDF/A-3 with an attachment, built by hand | — ZUGFeRD add-on removed from current versions | — | ~ PDF/A-3 attachments | — |
| PDF/X for print | — | ? | ✓ PDF/X-1a, X-3, X-4 | — | ✓ | — |
| Brotli stream compression (PDF 2.0) | ✓ Opt-in, 3–31% smaller files {4.2} | ? | ? | ? | ? | — |
| Conformance check after writing | ✓ PDF/A status report; strict mode rejects non-conformant source | ✓ | ✓ | ? | ✓ | ~ |

How to produce each standard is described under [PDF/A, PDF/UA and e-invoicing formats](https://pd4ml.com/docs/pd4ml-manual.html#11.2-pdfa-pdfua-and-e-invoicing-formats) and [ZUGFeRD and Factur-X PDF invoices](https://pd4ml.com/docs/features/zugferd-and-factur-x-pdf-invoices.html).

## Document features

| Feature | PD4ML | [iText + pdfHTML](https://kb.itextpdf.com/itext/chapter-4-creating-reports-using-pdfhtml) | [PDFreactor](https://www.pdfreactor.com/product/doc_html/manual-ws.html#Bookmarks) | [Aspose.HTML Java](https://docs.aspose.com/html/java/html-to-pdf-converter/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help#_bookmarks) | [OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf/wiki/Page-features) |
|---|---|---|---|---|---|---|
| Bookmarks | ✓ From headings or anchors | ✓ | ✓ | ? | ✓ | ✓ |
| Hyperlinks | ✓ Internal and external, in PDF and RTF | ✓ | ✓ | ✓ | ✓ | ✓ |
| Table of contents | ✓ Generated | ~ Through `target-counter` CSS | ✓ Through CSS | — | ✓ Through CSS | ~ |
| Footnotes and endnotes | ✓ | ? | ✓ | — | ✓ | — |
| Watermarks | ✓ Any HTML, with opacity and rotation, on screen or print only | ✓ | ✓ | ? | ✓ | ~ |
| Fillable PDF forms from HTML | ✓ Inputs, selects, text areas, submit and reset buttons | ✓ | ✓ | — | ✓ | ~ |
| File attachments | ✓ | ✓ | ✓ | — | ✓ | ? |
| Metadata | ✓ Including custom XMP namespaces {4.2} | ✓ | ✓ | ~ | ✓ | ~ |
| Inject HTML and template data | ✓ `injectHtml()`, `setDynamicData()` | ~ | ~ Through JavaScript | ✓ DOM | ~ XSLT | ~ |

See [PDF header and footer generation](https://pd4ml.com/docs/features/pdf-header-and-footer-generation.html) and [preventing widows and orphans](https://pd4ml.com/docs/features/preventing-widows-and-orphans-in-paginated-output.html).

## Fonts and international text

| Feature | PD4ML | [iText + pdfHTML](https://kb.itextpdf.com/itext/chapter-6-using-fonts-in-pdfhtml) | [PDFreactor](https://www.pdfreactor.com/product/doc_html/manual-ws.html#Fonts) | [Aspose.HTML Java](https://docs.aspose.com/html/java/environment-configuration/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help#_text) | [OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf/wiki/Fonts) |
|---|---|---|---|---|---|---|
| TrueType and OpenType embedding with subsetting | ✓ Fonts indexed ahead of time | ✓ | ✓ | ✓ | ✓ Including variable fonts | ✓ |
| CFF OpenType (.otf) subsetting | ✓ {4.2} | ✓ | ✓ | ? | ✓ | ? |
| Kerning and ligatures | ✓ | ~ pdfCalligraph add-on | ✓ | ? | ✓ | ~ |
| Arabic and Hebrew shaping, bidi | ✓ | ~ pdfCalligraph add-on | ✓ | ? | ✓ | ~ ICU4J plugin |
| Indic and South-East Asian scripts | ✓ Shaped without extra settings {4.2} | ~ pdfCalligraph add-on | ✓ | ? | ✓ | ~ |
| Chinese, Japanese, Korean | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

Details: [configuring PDF fonts](https://pd4ml.com/docs/features/configuring-pdf-fonts.html).

## Security, signatures and PDF post-processing

Every PD4ML edition, including STD, includes the PDF post-processing toolkit.

| Feature | PD4ML | [iText + pdfHTML](https://kb.itextpdf.com/itext/digital-signatures-hub) | [PDFreactor](https://www.pdfreactor.com/product/doc_html/manual-ws.html#DigitalSigning) | [Aspose.HTML Java](https://docs.aspose.com/html/java/fine-tuning-converters/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help#_digital_signatures) | OpenHTMLtoPDF |
|---|---|---|---|---|---|---|
| Encryption and permissions | ✓ RC4 40/128-bit, AES-128/256 | ✓ | ✓ | ~ Through Aspose.PDF | ✓ | ~ Through PDFBox |
| Digital signatures | ✓ PKCS#12, PKCS#11, HSM, cloud KMS, RFC 3161 timestamps, PAdES-LT/LTV | ✓ | ✓ | ~ Through Aspose.PDF | ✓ PKCS#11, cloud HSM | — |
| Merge PDFs | ✓ Keeps accessibility tags consistent | ✓ | ✓ | ~ Through Aspose.PDF | ✓ | — |
| Optimize file size | ✓ | ~ pdfOptimizer add-on | ? | ~ Through Aspose.PDF | ? | — |
| XFDF import and export | ✓ ISO 19444-1 | ✓ | — | — | ? | — |
| Low-level PDF object editing | ✓ COS object model with incremental updates | ✓ | — | — | ✓ | ~ PDFBox |

See [PD4ML PDF Signing](https://pd4ml.com/docs/pdf-tools/pd4ml-pdf-signing.html), [PDF Merge](https://pd4ml.com/docs/pdf-tools/pd4ml-pdf-merge.html), [PDF Optimizer](https://pd4ml.com/docs/pdf-tools/pd4ml-pdf-optimizer.html) and [PDF COS](https://pd4ml.com/docs/pdf-tools/pd4ml-pdf-cos.html).

## Tools, APIs and integrations

| Feature | PD4ML | [iText + pdfHTML](https://kb.itextpdf.com/itext/installing-itext-pdfhtml-for-java-developers) | [PDFreactor](https://www.pdfreactor.com/product/doc_html/manual-ws.html#UsingAClient) | [Aspose.HTML Java](https://docs.aspose.com/html/java/getting-started/installation/) | [BFO Publisher / RG](https://publisher.bfo.com/live/help#_api_usage) | [OpenHTMLtoPDF](https://github.com/openhtmltopdf/openhtmltopdf/wiki/Integration-Guide) |
|---|---|---|---|---|---|---|
| Command-line tool | ✓ Pd4Cmd plus signing, merge, optimize, COS and XFDF tools | — | ✓ | — | ✓ | — |
| Desktop previewer | ✓ PD4Browser with Fonts Tool | ~ RUPS (PDF inspector) | — | — | ✓ Web interface | — |
| Web service and Docker image | — | — | ✓ REST and SOAP, official image | ~ Docker sample | ✓ HTTP and WebSocket, image | — |
| JSP and servlet integration | ✓ Tag library for javax and Jakarta EE 9+ | — | — | — | ~ | — |
| Languages | Java, Python, PHP, .NET, Node.js, Ruby | Java, .NET | Java, .NET, PHP, Python, Ruby, Perl, Node.js | Java | Java | Java |
| Custom resource loading | ✓ Custom URL schemes (database, CMS) | ✓ | ? | ✓ | ? | ✓ |
| IBM Notes/Domino | ✓ | — | — | — | — | — |

Start with [Pd4Cmd](https://pd4ml.com/docs/pd4cmd-command-line-reference.html), [PD4Browser](https://pd4ml.com/docs/pd4browser-interactive-converter.html), [PD4ML for Python](https://pd4ml.com/docs/integrations/pd4ml-python.html) or [using PD4ML with Apache Maven](https://pd4ml.com/docs/features/using-pd4ml-with-apache-maven.html).

## PD4ML vs. iText pdfHTML

iText is a broad PDF toolkit, and pdfHTML is its HTML add-on: HTML becomes iText layout objects, which suits teams that already build PDFs with iText's API. Commercial use without publishing your own source code requires a commercial license, priced per customer as a subscription. PD4ML is a single engine for HTML and CSS with a perpetual license, writes DOCX and RTF from the same layout, ships PDF/UA-2 and ZUGFeRD presets, and includes signing, merging and optimization in every edition. Complex-script shaping and PDF optimization, which are separate add-ons in iText, are part of PD4ML.

## PD4ML vs. PDFreactor

PDFreactor runs JavaScript before layout and implements CSS Paged Media in depth, which helps with chart libraries, Canvas and print-production features such as PDF/X. It is sold as an annual subscription. PD4ML has no script engine and no PDF/X, but costs less than one month of a PDFreactor Pro subscription for a single license, never expires, adds DOCX and RTF output, and offers PDF/UA-2 and e-invoice presets. If your templates do not depend on client-side JavaScript, PD4ML covers the same reports, invoices and catalogues.

## PD4ML vs. Aspose.HTML for Java

Aspose.HTML is an HTML processing toolkit: a W3C DOM, scripting and conversion to many formats, with advanced PDF/A and PDF/UA work typically handled by Aspose.PDF. PD4ML is print-focused: deterministic pagination, page headers and footers, footnotes, tables of contents, fillable forms and PDF/UA tagging are built into the engine, and PD4ML 4.2 adds its own DOM API and layout read-back.

## PD4ML vs. BFO Publisher and Report Generator

BFO Publisher is architecturally closest to PD4ML: pure Java, its own CSS engine, a command-line tool and a web service, with strong PDF/UA and PDF/X support. It is licensed per server. PD4ML's single, site and enterprise licenses cover unlimited servers at the site and enterprise levels, and PD4ML adds DOCX and RTF output, ZUGFeRD presets and bindings for Python, PHP, .NET, Node.js and Ruby. BFO Report Generator renders its own XML report format rather than general HTML.

## PD4ML vs. OpenHTMLtoPDF

OpenHTMLtoPDF is free under the LGPL and a good fit for simple XHTML with CSS 2.1. It has no Flexbox or CSS Grid, no DOCX or RTF output and no digital signatures, and it is maintained by a community fork. PD4ML adds modern CSS layout, office formats, e-invoices, signatures and commercial support, starting at €100.

## When PD4ML is not the right choice

* Your templates need JavaScript to produce their content, for example charts drawn on a `<canvas>` at load time. PD4ML has no script engine; render such charts as SVG or images on the server instead.
* You need PDF/X or spot colours for commercial printing.
* You want a ready-made HTTP conversion service with an official Docker image rather than a library.
* You need WebP images: PD4ML decodes images through Java ImageIO (JPEG, PNG, GIF, BMP).

## Frequently asked questions

### What is the best Java library for converting HTML to PDF?

It depends on your templates and standards. For server-side reports, invoices and documents written in HTML and CSS without client-side JavaScript, PD4ML offers modern CSS layout, PDF/A, PDF/UA and ZUGFeRD with a perpetual license. If templates depend on JavaScript, PDFreactor or a headless browser fit better; for a free option with simple XHTML, OpenHTMLtoPDF.

### Is PD4ML a good alternative to iText pdfHTML?

Yes, for HTML-to-PDF conversion. PD4ML converts HTML and CSS directly, produces PDF/A, PDF/UA and ZUGFeRD, writes DOCX and RTF, and includes signing and merging, under a one-time license instead of an AGPL or subscription license.

### Does PD4ML support CSS Flexbox and CSS Grid?

Yes. Flexbox and CSS Grid are real layout modes in PD4ML. PD4ML 4.2 rewrites the Grid implementation to the CSS Grid specification, including template areas, line names and dense placement.

### Can PD4ML create accessible PDF/UA documents?

Yes. The PD4ML UA edition writes tagged PDF/UA-1, and PDF/UA-2 on PDF 2.0, and can combine PDF/UA with the accessible PDF/A levels 1a, 2a and 3a.

### Can PD4ML convert HTML to Word (DOCX)?

Yes. The DMS and UA editions convert HTML and CSS to DOCX, and the PRO edition and higher to RTF, from the same layout used for the PDF.

### Does PD4ML execute JavaScript?

No. PD4ML lays out HTML and CSS without a script engine, which keeps conversions fast and deterministic. Content produced by scripts, such as charts on a canvas, should be rendered as SVG or images before conversion.

### How much does PD4ML cost compared with iText and PDFreactor?

A PD4ML single license starts at €100 and is perpetual. Unlimited site licenses cost €1,600 to €3,200 once. PDFreactor Pro lists at $1,908 per year, and iText commercial licenses are quoted per customer as subscriptions.

### Which PD4ML edition do I need for ZUGFeRD or Factur-X invoices?

The DMS edition produces ZUGFeRD and Factur-X invoices on PDF/A-3b. For accessible invoices on PDF/A-3a, use the UA edition.

## Try PD4ML

Every PD4ML edition can be evaluated with all features enabled; unlicensed output carries a watermark. [Download PD4ML](https://pd4ml.com/downloads/), follow the [Programmer's Manual](https://pd4ml.com/docs/pd4ml-manual.html) and the [usage examples](https://pd4ml.com/docs/usage-examples.html), and compare the result with your current library on your own templates. When you are ready, [choose a license](https://pd4ml.com/products/).

*Product names are trademarks of their respective owners. Competitor capabilities and prices are taken from public sources as of November 2026 and may have changed; corrections are welcome through [PD4ML support](https://pd4ml.com/support-topics/).*
