source: pst/ps/fop.xml@ f0bedadb

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 12.2 gimp3 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk upgradedb xry111/for-12.3 xry111/intltool xry111/llvm18 xry111/soup3 xry111/spidermonkey128 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since f0bedadb was 6f6f731, checked in by Pierre Labastie <pieere@…>, 4 years ago

fop-2.5

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@23156 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 15.5 KB
RevLine 
[634c636c]1<?xml version="1.0" encoding="ISO-8859-1"?>
[6732c094]2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
[634c636c]4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
[4634c7a]7 <!ENTITY fop-download-http "https://archive.apache.org/dist/xmlgraphics/fop/source/fop-&fop-version;-src.tar.gz">
[75d53372]8 <!ENTITY fop-download-ftp " ">
[6f6f731]9 <!ENTITY fop-md5sum "5e7e87ef12845d31bce7a1fe8d61f501">
[bba3fd3]10 <!ENTITY fop-size "26 MB">
[6f6f731]11 <!ENTITY fop-buildsize "491 MB ">
[498bc8e]12 <!ENTITY fop-time "0.4 SBU">
[460e986]13
[28fb6fd]14 <!ENTITY pdfbox-version "2.0.19">
[bba3fd3]15 <!ENTITY pdfbox-download "http://mirror.reverse.net/pub/apache/pdfbox/&pdfbox-version;/pdfbox-&pdfbox-version;.jar">
[28fb6fd]16 <!ENTITY pdfbox-md5sum "1c085389e055c957b07c25c8443de728">
[2a8af5f]17 <!ENTITY pdfbox-size "2.6 MB">
[492000e]18
[bba3fd3]19 <!ENTITY fontbox-download "http://mirror.reverse.net/pub/apache/pdfbox/&pdfbox-version;/fontbox-&pdfbox-version;.jar">
[28fb6fd]20 <!ENTITY fontbox-md5sum "74b3b8ee7eef40b0aff5ca5aa07d96f7">
[bba3fd3]21 <!ENTITY fontbox-size "1.5 MB">
[8dfc5c3]22
[6f6f731]23 <!ENTITY maven-major "3">
24 <!ENTITY maven-version "3.6.3">
25 <!ENTITY maven-download "http://mirror.reverse.net/pub/apache/maven/maven-&maven-major;/&maven-version;/binaries/apache-maven-&maven-version;-bin.tar.gz">
26 <!ENTITY maven-md5sum "9792c717f5845d952907d5144b8253c3">
27 <!ENTITY maven-size "9 MB (additionally, about 100 MB are downloaded to the building user's directory)">
28
[8dfc5c3]29 <!ENTITY offo-download "&sourceforge-dl;/offo/2.2/offo-hyphenation.zip">
[bf7a1821]30 <!ENTITY offo-md5sum "bf9c09bf05108ef9661b8f08d91c2336">
31 <!ENTITY offo-size "862 KB">
[634c636c]32]>
33
[75d53372]34<sect1 id="fop" xreflabel="fop-&fop-version;">
[f570280]35 <?dbhtml filename="fop.html"?>
36
37 <sect1info>
38 <othername>$LastChangedBy$</othername>
39 <date>$Date$</date>
40 </sect1info>
41
[75d53372]42 <title>fop-&fop-version;</title>
[f570280]43
44 <indexterm zone="fop">
[75d53372]45 <primary sortas="a-fop">fop</primary>
[f570280]46 </indexterm>
47
48 <sect2 role="package">
[75d53372]49 <title>Introduction to fop</title>
[f570280]50
[6fe6db6]51 <para>
52 The <application>FOP</application> (Formatting Objects Processor)
53 package contains a print formatter driven by XSL formatting objects
54 (XSL-FO). It is a <application>Java</application> application that reads
55 a formatting object tree and renders the resulting pages to a specified
56 output. Output formats currently supported include PDF, PCL, PostScript,
57 SVG, XML (area tree representation), print, AWT, MIF and ASCII text. The
58 primary output target is PDF.
59 </para>
[f570280]60
[5ed7fdf]61 &lfs91_checked;
[50929e8]62
[f570280]63 <bridgehead renderas="sect3">Package Information</bridgehead>
64 <itemizedlist spacing="compact">
65 <listitem>
[fa3edfef]66 <para>
67 Download (HTTP): <ulink url="&fop-download-http;"/>
68 </para>
[f570280]69 </listitem>
70 <listitem>
[fa3edfef]71 <para>
72 Download (FTP): <ulink url="&fop-download-ftp;"/>
73 </para>
[f570280]74 </listitem>
75 <listitem>
[fa3edfef]76 <para>
77 Download MD5 sum: &fop-md5sum;
78 </para>
[f570280]79 </listitem>
80 <listitem>
[fa3edfef]81 <para>
82 Download size: &fop-size;
83 </para>
[f570280]84 </listitem>
85 <listitem>
[fa3edfef]86 <para>
87 Estimated disk space required: &fop-buildsize;
88 </para>
[f570280]89 </listitem>
90 <listitem>
[fa3edfef]91 <para>
92 Estimated build time: &fop-time;
93 </para>
[f570280]94 </listitem>
95 </itemizedlist>
96
97 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
98 <itemizedlist spacing="compact">
[a288a10]99 <title>Required Additional Downloads:</title>
[bba3fd3]100 <listitem>
[fa3edfef]101 <para>
102 PDFBox:
[bba3fd3]103 <simplelist>
104 <member><ulink url="&pdfbox-download;"/></member>
105 <member>&pdfbox-md5sum;</member>
106 <member>&pdfbox-size;</member>
107 </simplelist>
108 </para>
109 </listitem>
110 <listitem>
[fa3edfef]111 <para>
112 PDFBox Fonts:
[bba3fd3]113 <simplelist>
114 <member><ulink url="&fontbox-download;"/></member>
115 <member>&fontbox-md5sum;</member>
116 <member>&fontbox-size;</member>
117 </simplelist>
118 </para>
119 </listitem>
[6f6f731]120 <listitem>
121 <para>
122 Maven build system:
123 <simplelist>
124 <member><ulink url="&maven-download;"/></member>
125 <member>&maven-md5sum;</member>
126 <member>&maven-size;</member>
127 </simplelist>
128 </para>
129 </listitem>
[bba3fd3]130 </itemizedlist>
[cbfc7b61]131
[bba3fd3]132 <itemizedlist spacing="compact">
133 <title>Recommended packages</title>
[f570280]134 <listitem>
[fa3edfef]135 <para>
136 Objects for Formatting Objects (OFFO) hyphenation patterns:
[492000e]137 <simplelist>
138 <member><ulink url="&offo-download;"/></member>
139 <member>&offo-md5sum;</member>
140 <member>&offo-size;</member>
141 </simplelist>
[f570280]142 </para>
143 </listitem>
144 </itemizedlist>
145
[75d53372]146 <bridgehead renderas="sect3">fop Dependencies</bridgehead>
[f570280]147
148 <bridgehead renderas="sect4">Required</bridgehead>
[75d53372]149 <para role="required">
150 <xref linkend="apache-ant"/>
151 </para>
[f570280]152
153 <bridgehead renderas="sect4">Optional</bridgehead>
[75d53372]154 <para role="optional">
[c084a2a]155<!-- Included into ant <xref linkend="junit"/> (to run tests),-->
[adf80ef]156 <xref linkend="x-window-system"/> (to run tests),
[6f6f731]157<!-- <xref linkend="maven"/> (an alternate build system), not functional
[c084a2a]158 with fop-2.3 -->
[137446ef]159 <ulink url="http://jai-tools.blogspot.com/">JAI Image I/O Tools</ulink>, and
[bf7a1821]160 <ulink url="http://jeuclid.sourceforge.net/">JEuclid</ulink>
161<!-- [pierre 2017-04-29] Note to devs: there are a lot of bundled dependencies.
162 Some were listed here, but not all. I am not sure it is possible to
[6f6f731]163 use system ones. So, I have removed them, and kept only those which
[bf7a1821]164 are not bundled. -->
[75d53372]165 </para>
[f570280]166
[977061b0]167 <para condition="html" role="usernotes">User Notes:
168 <ulink url="&blfs-wiki;/fop"/></para>
169
[f570280]170 </sect2>
171
172 <sect2 role="installation">
[75d53372]173 <title>Installation of fop</title>
[f570280]174
[6fe6db6]175 <para>
176 Ensure <envar>$JAVA_HOME</envar> is set correctly before beginning
177 the build. To build the <application>JIMI SDK</application> and/or
178 <application>XMLUnit</application> extension classes, ensure the
179 corresponding <filename class='extension'>.jar</filename> files can be
180 found via the <envar>CLASSPATH</envar> environment variable.
181 </para>
[bf7a1821]182
[492000e]183 <sect3>
184 <title>Installing OFFO Hyphenation Patterns</title>
185
[6fe6db6]186 <para>
[bf7a1821]187 Copy the XML hyphenation patterns into the fop source tree by running
188 the following commands:
[6fe6db6]189 </para>
[492000e]190
[bf7a1821]191<screen><userinput>unzip ../offo-hyphenation.zip &amp;&amp;
192cp offo-hyphenation/hyph/* fop/hyph &amp;&amp;
193rm -rf offo-hyphenation</userinput></screen>
[492000e]194
195 </sect3>
[bf7a1821]196
[6f6f731]197 <sect3>
198 <title>Installing a temporary Maven binary</title>
199
200 <para>
201 Starting with fop-2.5, the Maven build system is required. We use
202 the binary provided by apache, that we install in a temporary location:
203 </para>
204
205<screen><userinput>tar -xf ../apache-maven-&maven-version;-bin.tar.gz -C /tmp</userinput></screen>
206
207 </sect3>
208
[f570280]209 <sect3>
[75d53372]210 <title>Installing fop Components</title>
[f570280]211
[6fe6db6]212 <para>
[2a8af5f]213 The <command>javadoc</command> command that ships with OpenJDK 10 and
214 later has
215 become much stricter than previous versions regarding conformance of
[bba3fd3]216 the Javadoc comments in source code to HTML. The FOP documentation does
217 not meet those standards, so the conformance checks have to be
[6fe6db6]218 disabled. This can be done with the following command:
219 </para>
220
[ba7be716]221<screen><userinput>sed -i '\@&lt;/javad@i\
222&lt;arg value="-Xdoclint:none"/&gt;\
[d61ead0a]223&lt;arg value="--allow-script-in-comments"/&gt;\
224&lt;arg value="--ignore-source-errors"/&gt;' \
225 fop/build.xml</userinput></screen>
[bf7a1821]226
227 <para>
228 The stack size set in <filename>build.xml</filename> for building the
[bba3fd3]229 hyphenation patterns is not large enough. Change it by running:
[bf7a1821]230 </para>
[6fe6db6]231
[bf7a1821]232<screen><userinput>sed -e '/hyph\.stack/s/512k/1M/' \
233 -i fop/build.xml</userinput></screen>
[bba3fd3]234
235 <para>
236 The <filename>build.xml</filename> file calls for an old version of
237 <application>PDFBox</application> components that are no longer
238 available. Copy the updated PDFBox components into the source tree:
239 </para>
240
241<screen><userinput>cp ../{pdf,font}box-&pdfbox-version;.jar fop/lib</userinput></screen>
242
[6fe6db6]243 <para>
[bba3fd3]244 Compile <application>fop</application> by running the following
245 commands:
[6fe6db6]246 </para>
[f570280]247
[6f6f731]248<screen><userinput>cd fop &amp;&amp;
249
250LC_ALL=en_US.UTF-8 \
251PATH=$PATH:/tmp/apache-maven-&maven-version;/bin \
252ant all javadocs &amp;&amp;
253
[cbfc7b61]254mv build/javadocs .</userinput></screen>
255
[6fe6db6]256 <para>
[6f6f731]257 This package comes with a testsuite, but the java infrastructure
258 installed in this book does not allow running it.
[6fe6db6]259 </para>
[bf7a1821]260
[6fe6db6]261 <para>
[bba3fd3]262 Now, install <application>Fop</application> as the
263 <systemitem class="username">root</systemitem> user:
[6fe6db6]264 </para>
[d260aaf4]265
[2612183a]266<screen role="root"><userinput>install -v -d -m755 -o root -g root /opt/fop-&fop-version; &amp;&amp;
267cp -vR build conf examples fop* javadocs lib /opt/fop-&fop-version; &amp;&amp;
[bf7a1821]268chmod a+x /opt/fop-&fop-version;/fop &amp;&amp;
269ln -v -sfn fop-&fop-version; /opt/fop</userinput></screen>
[f570280]270
[6f6f731]271 <para>
272 The last thing to do is to clean what we have done:
273 </para>
274
275<screen><userinput>rm -rf /tmp/apache-maven-&maven-version;</userinput></screen>
276
[f570280]277 </sect3>
278
279 </sect2>
[634c636c]280
[f570280]281 <sect2 role="commands">
282 <title>Command Explanations</title>
283
[ba7be716]284 <para>
285 <command>sed -i ... build.xml</command>: This adds two switches to the
286 <command>javadoc</command> command, preventing some errors to occur when
287 building the documentation.
288 </para>
289
290 <para>
[bf7a1821]291 <command>export LC_ALL=en_US.UTF-8</command>: the compiler fails if using
292 an ASCII locale.
[ba7be716]293 </para>
294
[6fe6db6]295 <para>
296 <command>ant <option>target</option></command>: This reads the file
[ba7be716]297 <filename>build.xml</filename> and builds the target: <option>compile
298 </option> compiles the java sources, <option>jar-main</option> generates
[bf7a1821]299 jar archives, <option>jar-hyphenation</option> generates the hyphenation
[bba3fd3]300 patterns for FOP, <option>junit</option> runs the
301 <application>junit</application> tests, and <option>javadocs</option>
302 builds the documentation. The <option>all</option> target runs all of the
303 above.
[6fe6db6]304 </para>
[f570280]305
[6fe6db6]306 <para>
307 <command>ln -v -sf fop-&fop-version; /opt/fop</command>: This is
308 optional and creates a convenience symlink so that
309 <envar>$FOP_HOME</envar> doesn't have to be changed each time there's a
310 package version change.
311 </para>
[f570280]312
313 </sect2>
314
315 <sect2 role="configuration">
[75d53372]316 <title>Configuring fop</title>
[f570280]317
318 <sect3 id="fop-config">
319 <title>Config Files</title>
320
[6fe6db6]321 <para>
322 <filename>~/.foprc</filename>
323 </para>
[f570280]324
325 <indexterm zone="fop fop-config">
326 <primary sortas="e-AA.foprc">~/.foprc</primary>
327 </indexterm>
328
329 </sect3>
330
331 <sect3>
332 <title>Configuration Information</title>
333
[6fe6db6]334 <para>
335 Using <application>fop</application> to process some large FO's
336 (including the FO derived from the BLFS XML sources), can lead to
337 memory errors. Unless you add a parameter to the
338 <command>java</command> command used in the <command>fop</command>
339 script you may receive messages similar to the one shown below:
340 </para>
[f570280]341
[6fe6db6]342 <para>
343 <computeroutput>
344 Exception in thread "main" java.lang.OutOfMemoryError: Java heap
345 space
346 </computeroutput>
347 </para>
[f570280]348
[6fe6db6]349 <para>
350 To avoid errors like this, you need to pass an extra parameter to
351 the <command>java</command> command used in the <command>fop</command>
352 script. This can be accomplished by creating a
353 <filename>~/.foprc</filename> (which is sourced by the
354 <command>fop</command> script) and adding the parameter to the
355 <envar>FOP_OPTS</envar> environment variable.
356 </para>
[f570280]357
[6fe6db6]358 <para>
359 The <command>fop</command> script looks for a
360 <envar>FOP_HOME</envar> environment variable to locate the
361 <application>fop</application> class libraries. You can create this
362 variable using the <filename>~/.foprc</filename> file as well. Create
363 a <filename>~/.foprc</filename> file using the following commands:
364 </para>
[f570280]365
366<screen><userinput>cat &gt; ~/.foprc &lt;&lt; "EOF"
[977061b0]367<literal>FOP_OPTS="-Xmx<replaceable>&lt;RAM_Installed&gt;</replaceable>m"
[f570280]368FOP_HOME="/opt/fop"</literal>
369EOF</userinput></screen>
370
[6fe6db6]371 <para>
372 Replace <replaceable>&lt;RAM_Installed&gt;</replaceable> with a
373 number representing the amount of RAM installed in your computer (in
374 megabytes). An example would be
375 <userinput>FOP_OPTS="-Xmx768m"</userinput>.
376 <!-- the URL is broken
377 For more information about
378 memory issues running <application>fop</application>, see
379 <ulink url="http://xml.apache.org/fop/running.html#memory"/>.
380 -->
[a754ee2b]381 </para>
[f570280]382
[6fe6db6]383 <para>
384 To include the <command>fop</command> script in your path,
[d61ead0a]385 update the system-wide profile with the following command as the
386 <systemitem class="username">root</systemitem> user:
[6fe6db6]387 </para>
[f570280]388
[866f38b]389<screen role="root"><userinput>cat &gt; /etc/profile.d/fop.sh &lt;&lt; "EOF"
390<literal># Begin /etc/profile.d/fop.sh
[d61ead0a]391
392pathappend /opt/fop
393
[866f38b]394# End /etc/profile.d/fop.sh</literal>
395EOF</userinput></screen>
[f570280]396
[6fe6db6]397 <note>
398 <para>
399 Running <command>fop</command> can be somewhat verbose.
400 The default logging level can be changed from INFO to any of
401 FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE, ALL, or OFF.
402 To do this, edit
403 <filename>$JAVA_HOME/jre/lib/logging.properties</filename> and change
[ba7be716]404 the entries for <option>.level</option> and
[6fe6db6]405 <option>java.util.logging.ConsoleHandler.level</option> to
406 the desired value.
407 </para>
408 </note>
[cbfc7b61]409
[f570280]410 </sect3>
411
412 </sect2>
413
414 <sect2 role="content">
415 <title>Contents</title>
416
417 <segmentedlist>
418 <segtitle>Installed Programs</segtitle>
419 <segtitle>Installed Libraries</segtitle>
420 <segtitle>Installed Directory</segtitle>
421
422 <seglistitem>
[492000e]423 <seg>fop</seg>
424 <seg>fop.jar and numerous support library classes located in
425 <filename class='directory'>/opt/fop/{build,lib}</filename>; JAI
426 components include libmlib_jai.so, jai_codec.jar, jai_core.jar, and
[f570280]427 mlibwrapper_jai.jar</seg>
428 <seg>/opt/fop-&fop-version;</seg>
429 </seglistitem>
430 </segmentedlist>
431
432 <variablelist>
433 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
434 <?dbfo list-presentation="list"?>
435 <?dbhtml list-presentation="table"?>
436
[492000e]437 <varlistentry id="fop-prog">
438 <term><command>fop</command></term>
[f570280]439 <listitem>
[fa3edfef]440 <para>
441 is a wrapper script to the <command>java</command> command
[6f6f731]442 which sets up the <application>fop</application>
443 environment and passes the required parameters.
[fa3edfef]444 </para>
[492000e]445 <indexterm zone="fop fop-prog">
446 <primary sortas="b-fop">fop</primary>
[f570280]447 </indexterm>
448 </listitem>
449 </varlistentry>
450
451 <varlistentry id="fop.jar">
452 <term><filename class='libraryfile'>fop.jar</filename></term>
453 <listitem>
[fa3edfef]454 <para>
455 contains all the <application>fop</application>
456 <application>Java</application> classes.
457 </para>
[f570280]458 <indexterm zone="fop fop.jar">
459 <primary sortas="c-fop.jar">fop.jar</primary>
460 </indexterm>
461 </listitem>
462 </varlistentry>
463
464 </variablelist>
465
466 </sect2>
467
468</sect1>
Note: See TracBrowser for help on using the repository browser.