FOP (Formatting Objects Processor) is the world's first print formatter driven by XSL formatting
objects (XSL-FO) and the world's first output independent formatter. It is a
Java application that reads a formatting object (FO) tree and
renders the resulting pages to a specified output. Output formats
currently supported include PDF, PCL, PS, SVG, XML (area tree representation),
Print, AWT, MIF and TXT.
The primary output target is PDF.
The latest version of FOP (0.20.5) is a partial implementation of the
XSL-FO Version 1.0
Support for each of the standard's objects and properties is detailed in FOP Compliance.
Download options include a precompiled version, source code, and many example files to get you started. Resources include links to XSL-FO introductions and many other useful references. A checklist for Getting Help will guide you toward maximizing the usefulness of FOP.
FOP is proud to be part of Apache's XML project.
This image is a demonstration of a real two page document. The xml data on the left
is formatted into the two pages on the right. The document contains static areas that appear on every page, an external graphic, a footnote on the first page, and a table that goes across both pages.
FOP uses the standard XSL-FO file format as input, lays the content out into pages, then renders it to the requested output.
One great advantage to using XSL-FO as input is that XSL-FO is itself an XML file, which means that it can be conveniently created from a variety of sources.
The most common method is to convert semantic XML to XSL-FO, using an XSLT transformation.
The goals of the Apache XML 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 15 October 2001, and that complies with the 11 March 1999 Portable Document
Format Specification (Version 1.3) from Adobe Systems.
Conformance to the XML 1.0 Recommendation, XSLT 1.0 Recommendation and the XML Namespaces Recommendation is
understood. Other relevant documents, such as the XPath and XLink Working Drafts, are referenced as necessary. The FOP
Project will attempt to use the latest version of evolving specifications.
The FOP layout system is currently being rewritten to better support the XSL-FO standard.
The PDF files on this site are created using FOP.