Developer documentation and API.

Stairway To Heaven Intro.pdf

Goodies are plugins that provide features for viewing, rendering, manipulating, and analyzing documents.

A goody targets a document's type and flavor. This is indicated by implementing the isApplicable(docType:String, flavor:String):Boolean method.

A goody advertises the types of contribution it makes.

  • Rendering
  • Editing
  • Viewing
  • Exporting
  • Importing
  • Filtering

A goody provides additional details for displaying in the UI.

  • Label
  • Icon
  • Category
  • Order

Implement RenderPlugin and register it with the ServiceManager.

The rendering process has several phases that a plugin can tap into. Each phase has a pre, in, and post entry point; This allows the plugins to interact at a relevant stage.

This example uses the Component annotation to register with the service manager.

public class ChordDiagramPlugin implements RenderPlugin {
    public void prePhase(RenderContext renderContext) {
        Logger.getGlobal().info("prePhase: " +;
    public void inPhase(RenderContext renderContext) {
        Logger.getGlobal().info("inPhase: " +;
    public void postPhase(RenderContext renderContext) {
        Logger.getGlobal().info("postPhase: " +;

Before each document is rendered.
Before each page is rendered. [progress queued]
Before the page header is drawn. [progress queued]
Before the page body is drawn. [progress queued]
Before the page footer is drawn. [progress queued]
Before each line is rendered.
Before each bar is rendered. >The final bar is not invoked.
Before each line of text is rendered. [progress queued]
Before each line of lyrics is rendered.


form and repeat lines bar text bar header bar contents (barline, meter, chords, middle text) bar footrer bar text lyric-line padding

  • OSGI DS like service manager for GWT
  • c2d plugin for jsPDF
  • Gray Bars
  • Uses same graphics code for canvas rendering and exports as eBook/PDF
  • Book and Page plugin architecture
  • goodies

  • Plugins (Goodies) can alter the rendering process.
  • Multiple document type suport
  • Document flavor support
  • Import and export from a variety of sources and formats