The Apache FOP Project

The Apache™ FOP Project

Apache™ FOP: Quick Start Guide

Everything you need to start using and appreciating Apache™ FOP quickly.

Apache™ FOP Essentials

The goal of this Quick Start Guide is to help novice users get Apache FOP up and running quickly. Typically, you'll need to:

  1. Download FOP

  2. Build FOP (you can skip this step if you download the binary distribution!)

  3. Configure FOP

  4. Run FOP

Here are some links to help you find out what FOP can do, as well as how and where to get help:

Once you've familiarized yourself with the basics, you can get more detailed information, in the detailed FOP product documentation.

Hello World with FOP

This section walks you through a "Hello World!" page with Apache FOP. We're assuming you download the binary distribution and that you have a Java Runtime Environment (version 1.8 or later) installed.

  1. Unpack the downloaded binary distribution to a directory of your choice (for example, C:\FOP if you're on Windows). Let's call that directory .

  2. Get a command prompt in the <fop-home> directory and write:

Windows: fop -fo examples/fo/basic/ -awt

Unix: ./fop -fo examples/fo/basic/ -awt

  1. If all went well, this should open a window showing you a "readme"-style document. This is just to verify that FOP runs correctly.

  2. Now, take your favorite XML editor and create a small XML file like the following. Replace "Frank" with your own first name to make it a bit more personal and save it as name.xml:

  3. To produce a PDF file from this XML file, we need an XSLT stylesheet that converts the XML to XSL-FO. This is the first step in the processing chain. The second step will be done by FOP when it reads the generated XSL-FO document and formats it to a PDF document. You can copy the following minimal XSLT stylesheet, which takes your first name and produces a "Hello World!"-style document (save it as name2fo.xsl):

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0"
      <xsl:output method="xml" indent="yes"/>
      <xsl:template match="/">
            <fo:simple-page-master master-name="A4-portrait"
                  page-height="29.7cm" page-width="21.0cm" margin="2cm">
          <fo:page-sequence master-reference="A4-portrait">
            <fo:flow flow-name="xsl-region-body">
                Hello, <xsl:value-of select="name"/>!
  4. Finally, let's put the previous two steps together: Go back to the command prompt and enter the following command:

Windows: fop -xml name.xml -xsl name2fo.xsl -pdf name.pdf

Unix: ./fop -xml name.xml -xsl name2fo.xsl -pdf name.pdf

  1. You've produced your first PDF with Apache FOP! Please open name.pdf in your favorite PDF viewer.