The following software must be installed:
The following software is optional, depending on your needs:
In addition, the following system requirements apply:
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.
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.
The usual and recommended practice for starting FOP from the command line is to run the
batch file fop.bat (Windows) or the shell script fop (Unix/Linux).
These scripts 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.
PDF encryption is only available if FOP was compiled with encryption support and if compatible encryption support is available at run time. Currently, only the JCE is supported. Check the Details.
FOP's entry point for your own scripts is the class
org.apache.fop.cli.Main
. The general pattern for the
command line is: java -classpath <CLASSPATH>
org.apache.fop.cli.Main <arguments>
. The arguments
consist of the options and infile and outfile specifications
as shown above for the standard scripts. You may wish to review
the standard scripts to make sure that
you get your environment properly configured.
-jar
option
As an alternative to the start scripts you can run java
-jar path/to/build/fop.jar <arguments>
, relying on
FOP to build the classpath for running FOP dynamically, see below. If you use hyphenation,
you must put fop-hyph.jar
in the lib
directory.
You can also run java -jar path/to/fop.jar
<arguments>
, relying on the Class-Path
entry in the manifest file. This works if you put
fop.jar
and all jar files from the lib
directory in a single directory. If you use hyphenation, you
must also put fop-hyph.jar
in that directory.
In both cases the arguments consist of the options and infile and outfile specifications as shown above for the standard scripts.
If FOP is started without a proper classpath, it tries to
add its dependencies dynamically. If the system property
fop.home
contains the name of a directory, then
FOP uses that directory as the base directory for its
search. Otherwise the current working directory is the base
directory. If the base directory is called build
,
then its parent directory becomes the base directory.
FOP expects to find fop.jar
in the
build
subdirectory of the base directory, and
adds it to the classpath. Subsequently FOP adds all
jar
files in the lib directory to the
classpath. The lib directory is either the lib
subdirectory of the base directory, or, if that does not
exist, the base directory itself.
If the system property fop.optional.lib
contains the name of a directory, then all jar
files in that directory are also added to the classpath. See
the methods getJARList
and
checkDependencies
in
org.apache.fop.cli.Main
.
FOP sessions that use -xml and -xsl input instead of -fo input are actually controlling two distinct conversions: Tranforming XML to XSL-FO, then formatting the XSL-FO to PDF (or another FOP output format). Although FOP controls both of these processes, the first is included merely as a convenience and for performance reasons. Only the second is part of FOP's core processing. If a user has a problem running FOP, it is important to determine which of these two processes is causing the problem. If the problem is in the first process, the user's stylesheet is likely the cause. The FOP development team does not have resources to help with stylesheet issues, although we have included links to some useful Specifications and Books/Articles. If the problem is in the second process, FOP may have a bug or an unimplemented feature that does require attention from the FOP development team.
In the case of using -xml and -xsl input, although the user is responsible for the XSL-FO code that is FOP's input, it is not visible to the user. To make the intermediate FO file visible, the FOP distribution includes the "-foout" option which causes FOP to run only the first (transformation) step, and write the results to a file. (See also the Xalan command-line below)
The -foout option works the same way as if you would call the Xalan command-line:
java org.apache.xalan.xslt.Process -IN xmlfile -XSL file -OUT outfile
Note that there are some subtle differences between the FOP and Xalan command-lines.
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:
If you have problems running FOP, please see the "How to get Help" page.