Getting Start Guide

This start guide shows how to use the Simple ODF API to create a text document with image, paragraph, list and table in OpenDocument format (ODF). In about 40 lines of code, you will be able to produce an OpenDocument Format text document named HelloWorld.odt that looks like this:

demo file


Simple ODF is written in Java, so you will need to have Java 1.5 or above installed on your system. Make sure you download the SDK (software development kit), not just the runtime version of Java.

In this tutorial, you can build and run the application from the command line or IDE, such as Eclipse. Anyway, you need to download the following three jars, store them in the "lib" directory and add them into the classpatch.

  1. Simple ODF 0.6.6.
  2. ODFDOM 0.8.7.
  3. The Apache Xerces 2.9.1 or higher version (download from Apache Xerces web site).

In addition, you need to download the resource file of this demo.


We write all of the code needed to create the document in the HelloWorld class. For simplicity, the code is wrapped in main method directly, package declaration is omitted and hard code is also included in this program.


import org.odftoolkit.simple.TextDocument;
import org.odftoolkit.simple.table.Cell;
import org.odftoolkit.simple.table.Table;
import org.odftoolkit.simple.text.list.List;

public class HelloWorld {
    public static void main(String[] args) {
        TextDocument outputOdt;
        try {
            outputOdt = TextDocument.newTextDocument();

            // add image
            outputOdt.newImage(new URI("odf-logo.png"));

            // add paragraph
            outputOdt.addParagraph("Hello World, Hello Simple ODF!");

            // add list
            outputOdt.addParagraph("The following is a list.");
            List list = outputOdt.addList();
            String[] items = {"item1", "item2", "item3"};

            // add table
            Table table = outputOdt.addTable(2, 2);
            Cell cell = table.getCellByPosition(0, 0);
            cell.setStringValue("Hello World!");

        } catch (Exception e) {
            System.err.println("ERROR: unable to create output file.");

The TextDocument class has these convenient methods:

    // Creates a new text document that contains an empty paragraph.
    // Puts the image at the given location at the end of the document.
    TextDocument.newImage(URI location)
    // Creates a new paragraph with the given content and appends it to the end of the document.
    TextDocument.addParagraph(String content)
    // Creates a new, empty list and appends it to the end of the document you're building. You can add items for this list.
    // Creates a new table with columnCount columns and rowCount rows. You can get the cell at given position and set its content.
    TextDocument.addTable(int columnCount, int rowCount);
    // Saves the document at the given path. path)

Building and Running

If you use Eclipse, you can just run this class as a Java Application. If you use command line, please complie code and run it with the following commands:

javac -cp lib/odfdom-java-0.8.7.jar:lib/simple-odf-0.6.6.jar
java -cp lib/odfdom-java-0.8.7.jar:lib/simple-odf-0.6.6.jar:lib/xercesImpl.jar:. HelloWorld

Getting the Files

You can download the code and resources of this demo from here.

Powered by the Apache CMS.

Apache "ODF Toolkit" is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

Copyright © 2011 The Apache Software Foundation Licensed under the Apache License, Version 2.0. Contact Us
Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
Other names appearing on the site may be trademarks of their respective owners.