FOP is the world's first print formatter driven by XSL formatting objects. It is a Java application that reads a formatting object tree and then turns it into a PDF document. The formatting object tree, can be in the form of an XML document (output by an XSLT engine like XT or Xalan) or can be passed in memory as a DOM Document or (in the case of XT) SAX events.
The latest version of Fop is 0.20.1 and it supports the xsl:fo candidate release.
You can
FOP is part of Apache's XML project. The homepage of FOP is
The goals of the Apache XML FOP Project are to deliver an XSL FO->PDF formatter that is compliant to at least the Basic conformance level described in the W3C Candidate Recommendation 21 November 2000, 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.
Secondary goals of the FOP Project (also, "FOP") are desirable requirements that also have a high priority.
One secondary goal of the FOP Project is to deliver a follow-on version of the formatter that is compliant to the Extended conformance level described in the XSL FO. Any formatting objects that cannot be translated into PDF will be explicitly identified as such.
Another secondary goal is to improve the conversion of SVG into PDF. This includes the use of FOP to work as a transcoder for Batik to convert an SVG document into a PDF document and the fully support embedding SVG inside fo documents in an fo:instream-foreign-object.
A final secondary goal is the continued refinement of the FOP design and implementation. In particular, maintaining the separation between formatting and rendering, continuing to support the AWT Viewer renderer (backend), and providing new renderers, are all desirable objectives.