%general-entities; ]> $LastChangedBy$ $Date$ FOP-&fop-version; FOP Introduction to FOP The FOP (Formatting Objects Processor) package contains a print formatter driven by XSL formatting objects (XSL-FO). It is a Java application that reads a formatting object tree and renders the resulting pages to a specified output. Output formats currently supported include PDF, PCL, PostScript, SVG, XML (area tree representation), print, AWT, MIF and ASCII text. The primary output target is PDF. Package Information Download (HTTP): Download (FTP): Download MD5 sum: &fop-md5sum; Download size: &fop-size; Estimated disk space required: &fop-buildsize; Estimated build time: &fop-time; Additional Downloads Required packages Objects for Formatting Objects (OFFO) hyphenation patterns: &offo-md5sum; &offo-size; Java Advanced Imaging (JAI) API components: &jai-md5sum; &jai-size; FOP Dependencies Required Optional JIMI SDK, XMLUnit, and Forrest (only used to rebuild the documentation) User Notes: Installation of FOP Ensure $JAVA_HOME is set correctly before beginning the build. To build the JIMI SDK and/or XMLUnit extension classes, ensure the corresponding .jar files are identified in the CLASSPATH environment variable. Installing OFFO Hyphenation Patterns Before beginning the build, unpack the FOP source tarball and the hyphenation zipfile from the same directory, then change directories into the root of the FOP source tree. The XML Hyphenation patterns will be copied into the FOP source tree by running the following commands: cp ../offo-hyphenation/hyph/* hyph && rm -rf ../offo-hyphenation Installing JAI The $FOP_PKG_DIR/jai-&jai-version;-lib-linux-i586-jdk.bin command below installs the JAI components in the JDK tree. You will be required to view, and then accept (by entering a y keypress), a license agreement before the installation will continue. If you are scripting (automating) the build, you'll need to account for this. There is information about automating build commands in the section of Chapter 2. Towards the end of this section, specific information for automating this type of installation is discussed. Install the JAI components by running the following commands as the root user while in the root of the FOP source tree: FOP_PKG_DIR=$(pwd)/.. && pushd $JAVA_HOME && sh $FOP_PKG_DIR/jai-&jai-version;-lib-linux-i586-jdk.bin && popd Installing FOP Components In case of not having forrest installed, remove a reference to it in the build.xml: sed -i -e "s/all,javadocs,docs/all,javadocs/" \ -e '\#${dist.bin.result.dir}/docs#,\#</copy>#d' build.xml Compile FOP by running the following commands: ant dist The unit regression tests were performed in the build step above. Now install FOP as the root user: install -v -d -m755 /opt/fop-&fop-version; && pushd dist-bin/fop-&fop-version; && cp -v -R * /opt/fop-&fop-version; && popd && ln -v -sf fop-&fop-version; /opt/fop Command Explanations FOP_PKG_DIR=$(pwd)/..: Assuming that the source packages are stored one level above of the current working directory. This is the allways default - but may be different because of personal tast. Change this to match the directory where the FOP tarball can be found. sh $FOP_PKG_DIR/jai-&jai-version;-lib-linux-i586-jdk.bin: This command installs the JAI components into the JDK file structure. $FOP_PKG_DIR is used as a reference point to the source executable. ant dist: This reads the build.xml file and performs the target which builds the package and runs the unit regression tests. It also creates the Java API documentation and a directory where the newly created binaries are placed into. This directory is used to install FOP to its final place. ln -v -sf fop-&fop-version; /opt/fop: This is optional and creates a convenience symlink so that $FOP_HOME doesn't have to be changed each time there's a package version change. Configuring FOP Config Files ~/.foprc ~/.foprc Configuration Information Using FOP to process some large FO's (including the FO derived from the BLFS XML sources), can lead to memory errors. Unless you add a parameter to the java command used in the fop script you may receive messages similar to the one shown below: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space To avoid errors like this, you need to pass an extra parameter to the java command used in the fop script. This can be accomplished by creating a ~/.foprc (which is sourced by the fop script) and adding the parameter to the FOP_OPTS environment variable. The fop script looks for a FOP_HOME environment variable to locate the FOP class libraries. You can create this variable using the ~/.foprc file as well. Create a ~/.foprc file using the following commands: cat > ~/.foprc << "EOF" FOP_OPTS="-Xmx<RAM_Installed>m" FOP_HOME="/opt/fop" EOF Replace <RAM_Installed> with a number representing the amount of RAM installed in your computer (in megabytes). An example would be FOP_OPTS="-Xmx768m". For more information about memory issues running FOP, see . To include the fop script in your path, update your personal or system-wide profile with the following: PATH=$PATH:/opt/fop Contents Installed Programs Installed Libraries Installed Directory fop fop.jar and numerous support library classes located in /opt/fop/{build,lib}; JAI components include libmlib_jai.so, jai_codec.jar, jai_core.jar, and mlibwrapper_jai.jar /opt/fop-&fop-version; Short Descriptions fop is a wrapper script to the java command which sets up the FOP environment and passes the required parameters. fop fop.jar contains all the FOP Java classes. fop.jar