Skip to content
dialegein

Apache FOP

Java XSL-FO formatter that turns XML formatting objects into PDF and print output.

Operated by The Apache Software Foundation

Visit Apache FOP

Opens the vendor's own site.

Jobs covered

Open a task to see exactly what the vendor documentation supports.

Where your files are processed

No server involved

A Java application you run yourself. The formatting objects are read from your own filesystem and the output is written there; the Apache Software Foundation operates no processing service at all. That is a property of the library itself: what an application built with it does with your file depends on that application, not on this.

A Java application you run yourself. The XML and the formatting objects are read from your own filesystem and the output is written to it; the Apache Software Foundation operates no processing service of any kind.

What it does

FOP is the Apache project that formats XSL-FO - the XML vocabulary for describing pages - and renders it to PDF, PostScript, PCL and print streams. It fits a pipeline that already speaks XML: FOP consumes XSL-FO, and XSLT is a common way to produce that input from XML, though an application may supply formatting objects directly or generate them by other means.

It is not an HTML and CSS renderer, which is a different job. It is a Java application, currently on version 2.11, and it is part of Apache's XML Graphics project alongside Batik.

Best for

Publishing and documentation pipelines that are already built on XML and XSLT, where the formatting step should be a standards-based transformation rather than a browser rendering. It is also the choice where output has to go somewhere other than PDF - print streams and AFP are supported, which most of the HTML-to-PDF tools here cannot do.

Worth knowing

XSL-FO is a large, old standard and FOP implements the Basic conformance level plus much of what lies beyond it, not the whole recommendation - the project publishes a compliance page precisely because the gaps need documenting, and a stylesheet that relies on an unimplemented property will render differently rather than fail loudly. It is also not an HTML renderer: there is no CSS support worth speaking of and no JavaScript, so a team arriving with a web template is on the wrong tool, and the pipeline has to go through XSLT to be useful at all.

That makes FOP a good fit for an XML house and a poor one for a modern web team, and the difference is architectural rather than a matter of quality. Its outputs beyond PDF - AFP and PCL particularly - are what make it unusual in this index, and they are also the parts least likely to be exercised by anyone evaluating it casually.

Details, and where each comes from

Vendor statements, our own reading of their pages, and the things nobody has established yet, each answered separately. Where we have not confirmed something it says so rather than guessing, and a row nobody has established is greyed out.

Versions covered
Self-hosted
Website
xmlgraphics.apache.org
Requires an account
Not applicable
Watermark on the free tier
Not verified
Maximum file size
Not verified
Batch processing
Yes
Data residency
Self-hosted
Open source
Yes
Self-hostable
Yes
Licence
Apache-2.0
Redaction
No redaction feature
Programmatic access
Command line · Embeddable library
Last availability check
Responded in 187 ms 21 October 2026

Checked automatically by our own runner, not reported by the vendor. 100% of our last 30 checks got a response.

What the redaction verdict rests on

From the vendor's own documentation, read 22 September 2026. Not tested by us.

“Apache™ FOP (Formatting Objects Processor) is a print formatter driven by XSL formatting objects (XSL-FO) and an output independent formatter.”

What that does not establish

Recorded as `none` on absence, and structurally: FOP builds pages from formatting objects and never opens an existing PDF, so there is no document for a redaction feature to operate on. It writes PDF, PS, PCL, AFP and others, but always as new output.

What it does not establish: that a document it produces is safe to share - a formatter renders whatever the data contains, which is the same generator risk this index records for Prince, WeasyPrint and the rest.

https://xmlgraphics.apache.org/fop/

What the vendor says

Claims are labelled rather than repeated as fact. Where we have checked something ourselves, it says so and shows when. Checked means we read the vendor's own page and it says what we recorded - not that we tested the behaviour, unless the note says we did.

  • “Apache™ FOP (Formatting Objects Processor) is a print formatter driven by XSL formatting objects (XSL-FO) and an output independent formatter. It is a Java application that reads a formatting object (FO) tree and renders the resulting pages to a specified output.”

    Checked by us - the source says this Read 1 October 2026

    Confirmed. The quoted text appears in the rendered page as read on 2026-10-01.

    This claim was carried as reported rather than checked until this read.

    Standing: Not re-read against the live source

    Check it yourself: the source, the SHA-256, and how we checked
    From
    the text a browser renders
    SHA-256
    aaaffe1641a8742205f5897c481f2818be599e8e051183a98327bc8cf16f7152

    How we checked

    Read as rendered text in headless Chrome on 2026-10-01 and saved to the evidence archive, so the read can be repeated against the same file. Comparison ignores case, punctuation and hyphenation, which is why "open-source" on the record matches "open source" on the page.

    What this hash proves, and what it does not

  • “The goals of the Apache FOP project are to deliver an XSL-FO to PDF formatter that is compliant to at least the Basic conformance level described in the W3C Recommendation from 05 December 2006”

    Checked by us - the source says this Read 1 October 2026

    Confirmed. The quoted text appears in the rendered page as read on 2026-10-01.

    This claim was carried as reported rather than checked until this read.

    Standing: Not re-read against the live source

    Check it yourself: the source, the SHA-256, and how we checked
    From
    the text a browser renders
    SHA-256
    aaaffe1641a8742205f5897c481f2818be599e8e051183a98327bc8cf16f7152

    How we checked

    Read as rendered text in headless Chrome on 2026-10-01 and saved to the evidence archive, so the read can be repeated against the same file. Comparison ignores case, punctuation and hyphenation, which is why "open-source" on the record matches "open source" on the page.

    What this hash proves, and what it does not

Each claim is quoted from the vendor's own pages. This section describes what we have and have not checked - it is not a judgement about anyone.

Sponsorship is distribution, not an endorsement or a promise of search rankings, AI citations, traffic, or sales. This listing is a free entry, compiled from published sources.

Visit Apache FOP Report a problem

Related reading

How this record was put together

Editorial review.
No editor has signed this record off. That is not the same as nothing having been checked, and the lines below say what has.
Source reading.
2 claims taken from the vendor's own pages, read between 1 October 2026 and 1 October 2026.
Website availability.
The vendor's site was last checked on 21 October 2026.
Behaviour testing.
We ran this ourselves. The file handling was watched directly.

Sources: xmlgraphics.apache.org/fop/, read 2026-09-22 with headless Chrome, including the introduction, objectives and compliance links. Project documentation, not independently tested; FOP was not installed and no document was formatted.