The Flying Saucer Project, An XML/XHTML/CSS 2.1 Renderer (100% in java)
There are two great articles about using Flying Saucer for practical purposes:
- Generating PDFs for Fun and Profit with Flying Saucer and iText, by Josh Marinacci from June 2007. Josh covers using Flying Saucer to generate PDF documents;
- Combine JSF Facelets and the Flying Saucer XHTML Renderer by Jacobus Steenkamp from October 2006. Jacobus covers using Flying Saucer to generate PDF, image and SVG output, with a focus on on-the-fly generation.
Flying Saucer Features
Supported Features in CSS 2.1
Flying Saucer supports all of CSS 2.1 with a few exceptions. Consult the issue tracker for more information on what is not supported (in particular, the issues with a summary of “Support …”) or ask on the mailing list. If you do encounter a compliance bug or other unexpected behavior, please open a bug or post to the mailing list.
Features:
- 100% Java XML+CSS layout engine with Java2D (Swing) and native PDF output. SWT coming soon.
- Strong support for the CSS 2.1 specification including extensions to better support paged media.
- Good performance.
- Support for XHTML including forms.
- Arbitrary elements may be replaced with custom content.
- Limited support for dynamic effects (for example, the :hover pseudo-class and links)
- Some support for PDF specific features (for example, bookmarks and internal links). More coming soon.
Limitations:
- Resource loading is single threaded and occurs inline with layout.
- Support for XHTML is weaker than XML+CSS (for example, not all XHTML presentational attributes are supported nor are X/HTML features like the <object> element).
- No support for legacy HTML (although there are several open source Java HTML cleaners of varying quality available).
- Swing printing is supported, but quality is lacking. Ask on the mailing list for details.
- No support for incremental layout (applies to screen media only).