Software - FOP Bridge

What Is It?

The FOP bridge plugin provides eclipse users the ability to convert FO documents into any one of the formats supported by Apache FOP directly from the workbench. Furthermore, conversion can be integrated into the Eclipse build-cycle. These capabilities are very useful for rapid prototyping.

To download the latest version visit Releases.

Usage

Usage is straightforward. Select a valid file, ending with an "fo" or "xml" extension. Open the context menu (i.e. right-click the file), and open the "Render" submenu. Select an installed rendering engine and an output format supported by that engine, and a progress window will open and show you a log of FOP's progress.

FOP Bridge can also integrate rendering into the Eclipse build cycle. When a set of files is being rendered, you are presented the option to integrate rendering into the build process. Selecting the option ensures that the document is re-rendered whenever the project is rebuilt. If you have "Build Automatically" selected for your project, then saving any change to the FO source file will trigger re-rendering.

Disabling this feature after it has been enabled for a file is simply a matter of unchecking the integrated rendering option.


License

FOP Bridge is available under the GNU Lesser Public License, which means that it is free for commercial and non-commercial use. To the best of my knowledge, this license doesn't conflict with the licensing of the underlying packages. Specifically, FOP is distributed under The Apache Software License, Version 1.1 and TIFFRenderer for FOP is under the Mozilla Public License Version 1.0.

Credits

Without Apache FOP, this couldn't have happened. I'm glad this project has fired up again—without it, I see a slow but sure death for XSL-FO. Also, TIFF rendering support in the 1.x versions was made possible by TIFFRenderer for FOP. TIFF rendering has been integrated directly into the later FOP versions, and so no add-in is necessary. Finally, I owe someone, somewhere, a thank you for the icons I used in the plugin. I think I found them on Interface Lift, but I can't be sure.

Feedback

I would love to hear feedback, be it positive, or, as they say in the euphemistic corporate world, "constructive". If you like the plugin or you think it can be improved, please shoot me an email.

Remarks

I'm not sure when or if the XSL-FO standard will ever hit the big time. For one thing, all the implementations are still rather spotty. See, for example, the XSL-FO Chef's Tools Exhibition which provided a comparison of different FO processing engines. Of all the engines, RenderX seems to provide the best one. Adobe's rendering performance was marginal and the $20,000 per CPU license is absolutely obscene in such a light. The Apache FOP project has not released in a long time, though there does seem to be some work towards a 1.0 release taking place.

Another problem with XSL-FO is that it just can't compete with TeX-based systems in terms of maturity—be it performance or rendering quality, it is many, many years behind the likes of MiKTeX and other TeX implementations. From what I've been reading, at least some of this comes down to inherent issues in the FO specification that prevent FO from competing with TeX-based systems.

This brings up a more fundamental gripe that I have with some of the hoopla around XML. It strikes me that in many cases, the wheel is being reinvented. Consider the existence of XML itself -- it seems that ASN.1 is a better thought-out, more mature alternative. I say better thought out because it explicitly decouples structure definition from encoding, whereas XML does not. Some argue that, unlike XML, an ASN.1 packet is not self-describing, but I would argue that for most B2B-type applications, a raw XML document is not sufficiently self-describing, either. In order for the data in an XML document to be useful, the data structure ususally needs to be defined ahead of time in a schema that has been agreed upon by all parties involved in the transaction -- it starts to sound a lot like ASN.1 to me. Recently, we have even seen the emergence of Fast Web Services from Sun Microsystems. Fast Web Services are Web Services using ASN.1 instead of XML.

Links

Here are links to a few other projects run by people who know what's up ;)
  1. TeXML: an XML syntax for TeX (LaTeX, ConTeXt). Oleg Paraschenko
  2. Document processing with LyX and SGML. Chris Karakas