FOP: An Open-Source XSL Formatter and Renderer

fop n. a man who is excessively concerned with appearance and style.

FOP is the world's first (but no longer only; see related links) print formatter driven by XSL formatting objects. It is a Java 1.1 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 can be passed in memory as a DOM Document or (in the case of XT) SAX events.

Note that FOP is still alpha. It is slow, buggy and doesn't support much of the XSL spec. It's getting there, though.

News

11th October: Version 0.11.0 Released

Major code changes. The way in which the formatting object tree creates the area tree has radically changed to allow much easier support for keeps, etc in the future. Numerous bugs were introduced (hence the delay in release) but even more fixed. In particular, line breaks work within inline-sequences now. FOP now uses namespaces. The prefix "fo" is no longer hard-coded. This version supports all of the Latin-1 characters now as well as some others available in PDF. Font metrics and character encoding mappings are specified in XML at compile time. Thanks to Fotis Jannidis for doing the conversion to XML for me. Basic display-graphic support is now in, but I consider it unusable at present.

2nd October: Mailing List for FOP Developers

I am now running a mailing list at ONElist for people who want to help in the development of FOP. See http://www.onelist.com/community/fop-dev for details.

16th September: Version 0.10.0 Released

This version is much faster. A 100-page test document that used to take 50 seconds in 0.9.x now takes 15 seconds. Some important bugs have been fixed. This version is approaching actually being usable for real work.

Very simple support for a tiny bit of SVG. break-before and break-after implemented. Justification bug fixed. text-indent implemented. font-weight as number implemented. line-height as number implemented. Java source for properties now generated from XML document via XSLT. Added support for emdash, copyright, non-breaking-space and section Detects inline-sequence directly under flow. Display rules can go in blocks. List item labels now obey start-indent. Page breaks mid-list now (appear to) work.

16th September: New Example: XSL Stylesheet for XHTML

Examples now includes the beginnings of an XSL stylesheet for XHTML. It is very experimental but hopefully useful. Comments encouraged.

James Tauber / jtauber@jtauber.com
Last updated: 1999-10-11