Running FOP
Installation
Overview

The following software must be installed:

  • Java 1.2.x or later.
  • FOP. The FOP distribution includes all libraries that you will need to run a basic FOP installation. These can be found in the xml-fop/lib directory. These libraries include the following:
    • Apache Xerces-J for XML parsing. You can use other XML parsers which support SAX and DOM.
    • Apache Xalan, an XSLT processor.
    • Apache Batik, an SVG library.
  • Optional Libraries
Instructions

Basic FOP installation consists of first unzipping the .gz file that is the distribution medium, then unarchiving the resulting .tar file in a directory/folder that is convenient on your system. Please consult your operating system documentation or Zip application software documentation for instructions specific to your site.

Problems

Some Mac OSX users have experienced filename truncation problems using Stuffit to unzip and unarchive their distribution media. This is a legacy of older Mac operating systems, which had a 31-character pathname limit. Several Mac OSX users have recommended that Mac OSX users use the shell command tar -xzf instead.

Starting FOP as a standalone application

Review the batch file fop.bat or the shell script fop.sh to see how FOP is invoked.

The standard scripts for starting FOP require that the environment variable JAVA_HOME be set to a path pointing to the appropriate Java installation on your system. Macintosh OSX includes a Java environment as part of its distribution. We are told by Mac OSX users that the path to use in this case is /Library/Java/Home. Caveat: We suspect that, as Apple releases new Java environments and as FOP upgrades the minimum Java requirements, the two will inevitably not match on some systems. Please see Java on Mac OSX FAQ for information as it becomes available.

fop [options] [-fo|-xml] infile [-xsl file] [-awt|-pdf|-mif|-pcl|-ps|-txt|-svg|-at|-print] <outfile>

[OPTIONS]

-d debug mode -x dump configuration settings -q quiet mode -c cfg.xml use additional configuration file cfg.xml -l lang the language to use for user information -s (-at output) omit tree below block areas -txt.encoding (-txt output encoding use the encoding for the output file. The encoding must be a valid java encoding. -o [password] pdf file will be encrypted with option owner password -u [password] pdf file will be encrypted with option user password -noprint pdf file will be encrypted without printing permission -nocopy pdf file will be encrypted without copy content permission -noedit pdf file will be encrypted without edit content permission -noannotations pdf file will be encrypted without edit annotation permission

[INPUT]

infile XSLFO input file (the same as the next) -fo infile xsl:fo input file -xml infile xml input file, must be used together with -xsl -xsl stylesheet xslt stylesheet

[OUTPUT]

outfile input will be rendered as pdf file into outfile -pdf outfile input will be rendered as pdf file (outfile req'd) -awt input will be displayed on screen -mif outfile input will be rendered as mif file (outfile req'd) -pcl outfile input will be rendered as pcl file (outfile req'd) -ps outfile input will be rendered as PostScript file (outfile req'd) -txt outfile input will be rendered as text file (outfile req'd) -svg outfile input will be rendered as an svg slides file (outfile req'd) -at outfile representation of area tree as XML (outfile req'd) -print input file will be rendered and sent to the printer see print specific options with "-print help"

[Examples]

fop foo.fo foo.pdf fop -fo foo.fo -pdf foo.pdf (does the same as the previous line) fop -xsl foo.xsl -xml foo.xml -pdf foo.pdf fop foo.fo -mif foo.mif fop foo.fo -print or fop -print foo.fo fop foo.fo -awt

PDF encryption is only available if FOP was compiled with encryption support and if compatible encryption support is availabe at run time. Currently, only the JCE is supported. Check the Details.

Running Xalan

The FOP distribution provicdes a Xalan.bat and a Xalan.sh script for conveniently running an XSL transformation without formatting. This can be useful for tracking down problems introduced during transformation and for preparing FO files for all kinds of purposes, including for inquiring help on the mailing lists.

The scripts are invoked the same way Xalan is, in short:

xalan -in xmlfile -xsl file -out outfile

Note that there are subtle differences to the FOP command line.

Memory Usage

FOP can consume quite a bit of memory, even though this has been continually improved. This is partly inherent to the formatting process and partly caused by implementation choices. All FO processors currently on the market have memory problems with certain layouts.

If you are running out of memory when using FOP, here are some ideas that may help:

There are currently some bugs which cause FOP to go into a nonterminating loop, which will also often result in a memory overflow. A characteristic symptom is continuous box overflows in the log. Most of these loops are triggered by elements that do not fit in the available space, such as big images or an improperly specified width in nested block elements. The only workaround is to locate such problems and correct them.

One of FOP's stated design goals is to be able to process input of arbitrary size. Addressing this goal is one of the prime motivations behind the FOP Redesign.

Problems

If you have problems running FOP, please have a look at the "How to get Help" page.