You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlgraphics.apache.org by bu...@apache.org on 2012/12/04 16:59:44 UTC
svn commit: r840735 [16/19] - in
/websites/staging/xmlgraphics/trunk/content: ./ batik/ batik/dev/
batik/tools/ batik/using/ batik/using/scripting/ commons/ fop/ fop/0.95/
fop/1.0/ fop/1.1/ fop/trunk/
Modified: websites/staging/xmlgraphics/trunk/content/fop/trunk/anttask.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/fop/trunk/anttask.html (original)
+++ websites/staging/xmlgraphics/trunk/content/fop/trunk/anttask.html Tue Dec 4 15:59:34 2012
@@ -346,16 +346,16 @@ $(document).ready(function () {
<h2 id="description-wzxhzdk7wzxhzdk8">Description <a id="basics"></a></h2>
<p>The FOP Ant task will convert XSL-FO documents to PDF, PS, PCL etc. output (see <a href="output.html">Output formats</a> for available formats).</p>
<p>To call FOP tasks within Ant, first add a FOP task definition to your Ant build file. One method of defining the task is as follows:</p>
-<div class="codehilite"><pre><span class="nt"><property</span> <span class="na">name=</span><span class="s">"fop.home"</span> <span class="na">value=</span><span class="s">"....path to your FOP HOME directory..."/</span><span class="nt">></span>
+<div class="codehilite"><pre><span class="nt"><property</span> <span class="na">name=</span><span class="s">"fop.home"</span> <span class="na">value=</span><span class="s">"....path to your FOP HOME directory..."</span><span class="nt">/></span>
-<span class="nt"><taskdef</span> <span class="na">name=</span><span class="s">"fop"</span>
+<span class="nt"><taskdef</span> <span class="na">name=</span><span class="s">"fop"</span>
<span class="na">classname=</span><span class="s">"org.apache.fop.tools.anttasks.Fop"</span><span class="nt">></span>
<span class="nt"><classpath></span>
- <span class="nt"><fileset</span> <span class="na">dir=</span><span class="s">"</span><span class="cp">${</span><span class="n">fop</span><span class="o">.</span><span class="n">home</span><span class="cp">}</span><span class="s">/lib"</span><span class="nt">></span>
- <span class="nt"><include</span> <span class="na">name=</span><span class="s">"*.jar"/</span><span class="nt">></span>
+ <span class="nt"><fileset</span> <span class="na">dir=</span><span class="s">"${fop.home}/lib"</span><span class="nt">></span>
+ <span class="nt"><include</span> <span class="na">name=</span><span class="s">"*.jar"</span><span class="nt">/></span>
<span class="nt"></fileset></span>
- <span class="nt"><fileset</span> <span class="na">dir=</span><span class="s">"</span><span class="cp">${</span><span class="n">fop</span><span class="o">.</span><span class="n">home</span><span class="cp">}</span><span class="s">/build"</span><span class="nt">></span>
- <span class="nt"><include</span> <span class="na">name=</span><span class="s">"fop.jar"/</span><span class="nt">></span>
+ <span class="nt"><fileset</span> <span class="na">dir=</span><span class="s">"${fop.home}/build"</span><span class="nt">></span>
+ <span class="nt"><include</span> <span class="na">name=</span><span class="s">"fop.jar"</span><span class="nt">/></span>
<span class="nt"><include</span> <span class="na">name=</span><span class="s">"fop-hyph.jar"</span> <span class="nt">/></span>
<span class="nt"></fileset></span>
<span class="nt"></classpath></span>
@@ -466,7 +466,7 @@ $(document).ready(function () {
<h2 id="examples-wzxhzdk14wzxhzdk15">Examples <a id="examples"></a></h2>
<p>The following example converts a single XSL-FO file to a PDF document:</p>
<div class="codehilite"><pre><span class="nt"><target</span> <span class="na">name=</span><span class="s">"generate-pdf"</span> <span class="na">description=</span><span class="s">"Generates a single PDF file"</span><span class="nt">></span>
- <span class="nt"><fop</span> <span class="na">format=</span><span class="s">"application/pdf"</span>
+ <span class="nt"><fop</span> <span class="na">format=</span><span class="s">"application/pdf"</span>
<span class="na">fofile=</span><span class="s">"c:\working\foDirectory\foDocument.fo"</span>
<span class="na">outfile=</span><span class="s">"c:\working\pdfDirectory\pdfDocument.pdf"</span> <span class="nt">/></span>
<span class="nt"></target></span>
@@ -474,12 +474,12 @@ $(document).ready(function () {
<p>This example converts all XSL-FO files within an entire directory to PostScript:</p>
-<div class="codehilite"><pre><span class="nt"><target</span> <span class="na">name=</span><span class="s">"generate-multiple-ps"</span>
+<div class="codehilite"><pre><span class="nt"><target</span> <span class="na">name=</span><span class="s">"generate-multiple-ps"</span>
<span class="na">description=</span><span class="s">"Generates multiple PostScript files"</span><span class="nt">></span>
- <span class="nt"><fop</span> <span class="na">format=</span><span class="s">"application/postscript"</span>
- <span class="na">outdir=</span><span class="s">"</span><span class="cp">${</span><span class="n">build</span><span class="o">.</span><span class="n">dir</span><span class="cp">}</span><span class="s">"</span> <span class="na">messagelevel=</span><span class="s">"debug"</span><span class="nt">></span>
- <span class="nt"><fileset</span> <span class="na">dir=</span><span class="s">"</span><span class="cp">${</span><span class="n">fo</span><span class="o">.</span><span class="n">examples</span><span class="o">.</span><span class="n">dir</span><span class="cp">}</span><span class="s">"</span><span class="nt">></span>
- <span class="nt"><include</span> <span class="na">name=</span><span class="s">"*.fo"/</span><span class="nt">></span>
+ <span class="nt"><fop</span> <span class="na">format=</span><span class="s">"application/postscript"</span>
+ <span class="na">outdir=</span><span class="s">"${build.dir}"</span> <span class="na">messagelevel=</span><span class="s">"debug"</span><span class="nt">></span>
+ <span class="nt"><fileset</span> <span class="na">dir=</span><span class="s">"${fo.examples.dir}"</span><span class="nt">></span>
+ <span class="nt"><include</span> <span class="na">name=</span><span class="s">"*.fo"</span><span class="nt">/></span>
<span class="nt"></fileset></span>
<span class="nt"></fop></span>
<span class="nt"></target></span>
@@ -488,7 +488,7 @@ $(document).ready(function () {
<p>The following example transforms and converts a single XML and XSLT file to an AFP document:</p>
<div class="codehilite"><pre><span class="nt"><target</span> <span class="na">name=</span><span class="s">"generate-afp-from-transform"</span> <span class="na">description=</span><span class="s">"Generates a single AFP file from an XSLT stylesheet"</span><span class="nt">></span>
- <span class="nt"><fop</span> <span class="na">format=</span><span class="s">"application/x-afp"</span>
+ <span class="nt"><fop</span> <span class="na">format=</span><span class="s">"application/x-afp"</span>
<span class="na">xmlfile=</span><span class="s">"c:\working\foDirectory\Document.xml"</span>
<span class="na">xsltfile=</span><span class="s">"c:\working\foDirectory\Document.xslt"</span>
<span class="na">outfile=</span><span class="s">"c:\working\afpDirectory\Document.afp"</span> <span class="nt">/></span>
@@ -498,11 +498,11 @@ $(document).ready(function () {
<p>This example transforms and converts all XML files within an entire directory to PostScript:</p>
<div class="codehilite"><pre><span class="nt"><target</span> <span class="na">name=</span><span class="s">"generate-multiple-ps-from-transform"</span> <span class="na">description=</span><span class="s">"Generates multiple PostScript files using an XSLT stylesheet"</span><span class="nt">></span>
- <span class="nt"><fop</span> <span class="na">format=</span><span class="s">"application/postscript"</span>
+ <span class="nt"><fop</span> <span class="na">format=</span><span class="s">"application/postscript"</span>
<span class="na">xsltfile=</span><span class="s">"c:\working\foDirectory\Document.xslt"</span>
- <span class="na">outdir=</span><span class="s">"</span><span class="cp">${</span><span class="n">build</span><span class="o">.</span><span class="n">dir</span><span class="cp">}</span><span class="s">"</span> <span class="na">messagelevel=</span><span class="s">"debug"</span><span class="nt">></span>
- <span class="nt"><fileset</span> <span class="na">dir=</span><span class="s">"</span><span class="cp">${</span><span class="n">test</span><span class="o">.</span><span class="n">dir</span><span class="cp">}</span><span class="s">"</span><span class="nt">></span>
- <span class="nt"><include</span> <span class="na">name=</span><span class="s">"*.xml"/</span><span class="nt">></span>
+ <span class="na">outdir=</span><span class="s">"${build.dir}"</span> <span class="na">messagelevel=</span><span class="s">"debug"</span><span class="nt">></span>
+ <span class="nt"><fileset</span> <span class="na">dir=</span><span class="s">"${test.dir}"</span><span class="nt">></span>
+ <span class="nt"><include</span> <span class="na">name=</span><span class="s">"*.xml"</span><span class="nt">/></span>
<span class="nt"></fileset></span>
<span class="nt"></fop></span>
<span class="nt"></target></span>
Modified: websites/staging/xmlgraphics/trunk/content/fop/trunk/configuration.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/fop/trunk/configuration.html (original)
+++ websites/staging/xmlgraphics/trunk/content/fop/trunk/configuration.html Tue Dec 4 15:59:34 2012
@@ -588,10 +588,10 @@ $(document).ready(function () {
<p>By default FOP produces PDF files of version 1.4, but this can be changed in order to benefit from features that appeared in newer versions of PDF. At the moment, only a few features from PDF 1.5 have been implemented, but the configuration element will accept any value between 1.4 and 1.7. This is the value that will appear in the PDF header, although only features up to 1.5 will actually be used.</p>
-<div class="codehilite"><pre> <span class="nt"><renderer</span> <span class="na">mime=</span><span class="s">"application/pdf"</span><span class="nt">></span>
+<div class="codehilite"><pre><span class="nt"><renderer</span> <span class="na">mime=</span><span class="s">"application/pdf"</span><span class="nt">></span>
- <span class="c"><!-- Versions 1.4, 1.5, 1.6 and 1.7 are accepted, all other values are invalid --></span>
- <span class="nt"></renderer></span>
+ <span class="c"><!-- Versions 1.4, 1.5, 1.6 and 1.7 are accepted, all other values are invalid --></span>
+<span class="nt"></renderer></span>
</pre></div>
@@ -650,7 +650,8 @@ $(document).ready(function () {
</li>
<li>
<p>The FOP distribution contains a schema for configuration files, at src/foschema/fop-configuration.xsd. Did you validate your configuration file against it? Add the following schema location to the <code>schema</code> element:</p>
-<p><fop
+<p>:::xml
+<fop
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation=
"http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/foschema/fop-configuration.xsd?view=co"></p>
Modified: websites/staging/xmlgraphics/trunk/content/fop/trunk/embedding.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/fop/trunk/embedding.html (original)
+++ websites/staging/xmlgraphics/trunk/content/fop/trunk/embedding.html Tue Dec 4 15:59:34 2012
@@ -369,42 +369,42 @@ $(document).ready(function () {
<h2 id="basic-usage-pattern-wzxhzdk32wzxhzdk33">Basic Usage Pattern <a id="basics"></a></h2>
<p>Apache FOP relies heavily on JAXP. It uses SAX events exclusively to receive the XSL-FO input document. It is therefore a good idea that you know a few things about JAXP (which is a good skill anyway). Let's look at the basic usage pattern for FOP...</p>
<p>Here is the basic pattern to render an XSL-FO file to PDF:</p>
-<div class="codehilite"><pre><span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">fop</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">FopFactory</span><span class="p">;</span>
-<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">fop</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">Fop</span><span class="p">;</span>
-<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">fop</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">MimeConstants</span><span class="p">;</span>
-
-<span class="sr">/*..*/</span>
-
-<span class="sr">//</span> <span class="n">Step</span> <span class="mi">1</span><span class="p">:</span> <span class="n">Construct</span> <span class="n">a</span> <span class="n">FopFactory</span>
-<span class="sr">//</span> <span class="p">(</span><span class="n">reuse</span> <span class="k">if</span> <span class="n">you</span> <span class="n">plan</span> <span class="n">to</span> <span class="n">render</span> <span class="n">multiple</span> <span class="n">documents</span><span class="o">!</span><span class="p">)</span>
-<span class="n">FopFactory</span> <span class="n">fopFactory</span> <span class="o">=</span> <span class="n">FopFactory</span><span class="o">.</span><span class="n">newInstance</span><span class="p">();</span>
-
-<span class="sr">//</span> <span class="n">Step</span> <span class="mi">2</span><span class="p">:</span> <span class="n">Set</span> <span class="n">up</span> <span class="n">output</span> <span class="n">stream</span><span class="o">.</span>
-<span class="sr">//</span> <span class="n">Note:</span> <span class="n">Using</span> <span class="n">BufferedOutputStream</span> <span class="k">for</span> <span class="n">performance</span> <span class="n">reasons</span> <span class="p">(</span><span class="n">helpful</span> <span class="n">with</span> <span class="n">FileOutputStreams</span><span class="p">)</span><span class="o">.</span>
-<span class="n">OutputStream</span> <span class="n">out</span> <span class="o">=</span> <span class="k">new</span> <span class="n">BufferedOutputStream</span><span class="p">(</span><span class="k">new</span> <span class="n">FileOutputStream</span><span class="p">(</span><span class="k">new</span> <span class="n">File</span><span class="p">(</span><span class="s">"C:/Temp/myfile.pdf"</span><span class="p">)));</span>
-
-<span class="n">try</span> <span class="p">{</span>
- <span class="sr">//</span> <span class="n">Step</span> <span class="mi">3</span><span class="p">:</span> <span class="n">Construct</span> <span class="n">fop</span> <span class="n">with</span> <span class="n">desired</span> <span class="n">output</span> <span class="nb">format</span>
- <span class="n">Fop</span> <span class="n">fop</span> <span class="o">=</span> <span class="n">fopFactory</span><span class="o">.</span><span class="n">newFop</span><span class="p">(</span><span class="n">MimeConstants</span><span class="o">.</span><span class="n">MIME_PDF</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
-
- <span class="sr">//</span> <span class="n">Step</span> <span class="mi">4</span><span class="p">:</span> <span class="n">Setup</span> <span class="n">JAXP</span> <span class="n">using</span> <span class="n">identity</span> <span class="n">transformer</span>
- <span class="n">TransformerFactory</span> <span class="n">factory</span> <span class="o">=</span> <span class="n">TransformerFactory</span><span class="o">.</span><span class="n">newInstance</span><span class="p">();</span>
- <span class="n">Transformer</span> <span class="n">transformer</span> <span class="o">=</span> <span class="n">factory</span><span class="o">.</span><span class="n">newTransformer</span><span class="p">();</span> <span class="sr">//</span> <span class="n">identity</span> <span class="n">transformer</span>
-
- <span class="sr">//</span> <span class="n">Step</span> <span class="mi">5</span><span class="p">:</span> <span class="n">Setup</span> <span class="n">input</span> <span class="ow">and</span> <span class="n">output</span> <span class="k">for</span> <span class="n">XSLT</span> <span class="n">transformation</span>
- <span class="sr">//</span> <span class="n">Setup</span> <span class="n">input</span> <span class="n">stream</span>
- <span class="n">Source</span> <span class="n">src</span> <span class="o">=</span> <span class="k">new</span> <span class="n">StreamSource</span><span class="p">(</span><span class="k">new</span> <span class="n">File</span><span class="p">(</span><span class="s">"C:/Temp/myfile.fo"</span><span class="p">));</span>
-
- <span class="sr">//</span> <span class="n">Resulting</span> <span class="n">SAX</span> <span class="n">events</span> <span class="p">(</span><span class="n">the</span> <span class="n">generated</span> <span class="n">FO</span><span class="p">)</span> <span class="n">must</span> <span class="n">be</span> <span class="n">piped</span> <span class="n">through</span> <span class="n">to</span> <span class="n">FOP</span>
- <span class="n">Result</span> <span class="n">res</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SAXResult</span><span class="p">(</span><span class="n">fop</span><span class="o">.</span><span class="n">getDefaultHandler</span><span class="p">());</span>
-
- <span class="sr">//</span> <span class="n">Step</span> <span class="mi">6</span><span class="p">:</span> <span class="n">Start</span> <span class="n">XSLT</span> <span class="n">transformation</span> <span class="ow">and</span> <span class="n">FOP</span> <span class="n">processing</span>
- <span class="n">transformer</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">src</span><span class="p">,</span> <span class="n">res</span><span class="p">);</span>
-
-<span class="p">}</span> <span class="n">finally</span> <span class="p">{</span>
- <span class="sr">//</span><span class="n">Clean</span><span class="o">-</span><span class="n">up</span>
- <span class="n">out</span><span class="o">.</span><span class="nb">close</span><span class="p">();</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="kn">import</span> <span class="nn">org.apache.fop.apps.FopFactory</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.fop.apps.Fop</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.fop.apps.MimeConstants</span><span class="o">;</span>
+
+<span class="cm">/*..*/</span>
+
+<span class="c1">// Step 1: Construct a FopFactory</span>
+<span class="c1">// (reuse if you plan to render multiple documents!)</span>
+<span class="n">FopFactory</span> <span class="n">fopFactory</span> <span class="o">=</span> <span class="n">FopFactory</span><span class="o">.</span><span class="na">newInstance</span><span class="o">();</span>
+
+<span class="c1">// Step 2: Set up output stream.</span>
+<span class="c1">// Note: Using BufferedOutputStream for performance reasons (helpful with FileOutputStreams).</span>
+<span class="n">OutputStream</span> <span class="n">out</span> <span class="o">=</span> <span class="k">new</span> <span class="n">BufferedOutputStream</span><span class="o">(</span><span class="k">new</span> <span class="n">FileOutputStream</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="s">"C:/Temp/myfile.pdf"</span><span class="o">)));</span>
+
+<span class="k">try</span> <span class="o">{</span>
+ <span class="c1">// Step 3: Construct fop with desired output format</span>
+ <span class="n">Fop</span> <span class="n">fop</span> <span class="o">=</span> <span class="n">fopFactory</span><span class="o">.</span><span class="na">newFop</span><span class="o">(</span><span class="n">MimeConstants</span><span class="o">.</span><span class="na">MIME_PDF</span><span class="o">,</span> <span class="n">out</span><span class="o">);</span>
+
+ <span class="c1">// Step 4: Setup JAXP using identity transformer</span>
+ <span class="n">TransformerFactory</span> <span class="n">factory</span> <span class="o">=</span> <span class="n">TransformerFactory</span><span class="o">.</span><span class="na">newInstance</span><span class="o">();</span>
+ <span class="n">Transformer</span> <span class="n">transformer</span> <span class="o">=</span> <span class="n">factory</span><span class="o">.</span><span class="na">newTransformer</span><span class="o">();</span> <span class="c1">// identity transformer</span>
+
+ <span class="c1">// Step 5: Setup input and output for XSLT transformation</span>
+ <span class="c1">// Setup input stream</span>
+ <span class="n">Source</span> <span class="n">src</span> <span class="o">=</span> <span class="k">new</span> <span class="n">StreamSource</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="s">"C:/Temp/myfile.fo"</span><span class="o">));</span>
+
+ <span class="c1">// Resulting SAX events (the generated FO) must be piped through to FOP</span>
+ <span class="n">Result</span> <span class="n">res</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SAXResult</span><span class="o">(</span><span class="n">fop</span><span class="o">.</span><span class="na">getDefaultHandler</span><span class="o">());</span>
+
+ <span class="c1">// Step 6: Start XSLT transformation and FOP processing</span>
+ <span class="n">transformer</span><span class="o">.</span><span class="na">transform</span><span class="o">(</span><span class="n">src</span><span class="o">,</span> <span class="n">res</span><span class="o">);</span>
+
+<span class="o">}</span> <span class="k">finally</span> <span class="o">{</span>
+ <span class="c1">//Clean-up</span>
+ <span class="n">out</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
+<span class="o">}</span>
</pre></div>
@@ -448,12 +448,12 @@ $(document).ready(function () {
<p>Once the Fop instance is set up, call <code>getDefaultHandler()</code> to obtain a SAX DefaultHandler instance to which you can send the SAX events making up the XSL-FO document you'd like to render. FOP processing starts as soon as the DefaultHandler's <code>startDocument()</code> method is called. Processing stops again when the DefaultHandler's <code>endDocument()</code> method is called. Please refer to the basic usage pattern shown above to render a simple XSL-FO document.</p>
<h3 id="processing-xsl-fo-generated-from-xmlxslt-wzxhzdk38wzxhzdk39">Processing XSL-FO generated from XML+XSLT <a id="render-with-xslt"></a></h3>
<p>If you want to process XSL-FO generated from XML using XSLT we recommend again using standard JAXP to do the XSLT part and piping the generated SAX events directly through to FOP. The only thing you'd change to do that on the basic usage pattern above is to set up the Transformer differently:</p>
-<div class="codehilite"><pre><span class="sr">//</span><span class="n">without</span> <span class="n">XSLT:</span>
-<span class="sr">//</span><span class="n">Transformer</span> <span class="n">transformer</span> <span class="o">=</span> <span class="n">factory</span><span class="o">.</span><span class="n">newTransformer</span><span class="p">();</span> <span class="sr">//</span> <span class="n">identity</span> <span class="n">transformer</span>
+<div class="codehilite"><pre><span class="c1">//without XSLT:</span>
+<span class="c1">//Transformer transformer = factory.newTransformer(); // identity transformer</span>
-<span class="sr">//</span><span class="n">with</span> <span class="n">XSLT:</span>
-<span class="n">Source</span> <span class="n">xslt</span> <span class="o">=</span> <span class="k">new</span> <span class="n">StreamSource</span><span class="p">(</span><span class="k">new</span> <span class="n">File</span><span class="p">(</span><span class="s">"mystylesheet.xsl"</span><span class="p">));</span>
-<span class="n">Transformer</span> <span class="n">transformer</span> <span class="o">=</span> <span class="n">factory</span><span class="o">.</span><span class="n">newTransformer</span><span class="p">(</span><span class="n">xslt</span><span class="p">);</span>
+<span class="c1">//with XSLT:</span>
+<span class="n">Source</span> <span class="n">xslt</span> <span class="o">=</span> <span class="k">new</span> <span class="n">StreamSource</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="s">"mystylesheet.xsl"</span><span class="o">));</span>
+<span class="n">Transformer</span> <span class="n">transformer</span> <span class="o">=</span> <span class="n">factory</span><span class="o">.</span><span class="na">newTransformer</span><span class="o">(</span><span class="n">xslt</span><span class="o">);</span>
</pre></div>
@@ -534,11 +534,11 @@ Set a <strong>URIResolver</strong> for c
<p>Both the FopFactory and the FOUserAgent have a method to set a URIResolver. The URIResolver on the FopFactory is primarily used to resolve URIs on factory-level (hyphenation patterns, for example) and it is always used if no other URIResolver (for example on the FOUserAgent) resolved the URI first.</p>
<h3 id="customizing-the-user-agent-wzxhzdk46wzxhzdk47">Customizing the User Agent <a id="user-agent"></a></h3>
<p>The user agent is the entity that allows you to interact with a single rendering run, i.e. the processing of a single document. If you wish to customize the user agent's behaviour, the first step is to create your own instance of FOUserAgent using the appropriate factory method on FopFactory and pass that to the factory method that will create a new Fop instance:</p>
-<div class="codehilite"><pre><span class="n">FopFactory</span> <span class="n">fopFactory</span> <span class="o">=</span> <span class="n">FopFactory</span><span class="o">.</span><span class="n">newInstance</span><span class="p">();</span> <span class="sr">//</span> <span class="n">Reuse</span> <span class="n">the</span> <span class="n">FopFactory</span> <span class="k">if</span> <span class="n">possible</span><span class="o">!</span>
-<span class="sr">//</span> <span class="k">do</span> <span class="n">the</span> <span class="n">following</span> <span class="k">for</span> <span class="nb">each</span> <span class="k">new</span> <span class="n">rendering</span> <span class="n">run</span>
-<span class="n">FOUserAgent</span> <span class="n">userAgent</span> <span class="o">=</span> <span class="n">fopFactory</span><span class="o">.</span><span class="n">newFOUserAgent</span><span class="p">();</span>
-<span class="sr">//</span> <span class="n">customize</span> <span class="n">userAgent</span>
-<span class="n">Fop</span> <span class="n">fop</span> <span class="o">=</span> <span class="n">fopFactory</span><span class="o">.</span><span class="n">newFop</span><span class="p">(</span><span class="n">MimeConstants</span><span class="o">.</span><span class="n">MIME_POSTSCRIPT</span><span class="p">,</span> <span class="n">userAgent</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+<div class="codehilite"><pre><span class="n">FopFactory</span> <span class="n">fopFactory</span> <span class="o">=</span> <span class="n">FopFactory</span><span class="o">.</span><span class="na">newInstance</span><span class="o">();</span> <span class="c1">// Reuse the FopFactory if possible!</span>
+<span class="c1">// do the following for each new rendering run</span>
+<span class="n">FOUserAgent</span> <span class="n">userAgent</span> <span class="o">=</span> <span class="n">fopFactory</span><span class="o">.</span><span class="na">newFOUserAgent</span><span class="o">();</span>
+<span class="c1">// customize userAgent</span>
+<span class="n">Fop</span> <span class="n">fop</span> <span class="o">=</span> <span class="n">fopFactory</span><span class="o">.</span><span class="na">newFop</span><span class="o">(</span><span class="n">MimeConstants</span><span class="o">.</span><span class="na">MIME_POSTSCRIPT</span><span class="o">,</span> <span class="n">userAgent</span><span class="o">,</span> <span class="n">out</span><span class="o">);</span>
</pre></div>
@@ -612,31 +612,31 @@ Set a <strong>URIResolver</strong> for c
<p>Both the FopFactory and the FOUserAgent have a method to set a URIResolver. The URIResolver on the FOUserAgent is used for resolving URIs which are document-related. If it's not set or cannot resolve a URI, the URIResolver from the FopFactory is used. You should not reuse an FOUserAgent instance between FOP rendering runs although you can. Especially in multi-threaded environment, this is a bad idea.</p>
<h2 id="using-a-configuration-file-wzxhzdk48wzxhzdk49">Using a Configuration File <a id="config-external"></a></h2>
<p>Instead of setting the parameters manually in code as shown above you can also set many values from an XML configuration file:</p>
-<div class="codehilite"><pre><span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">avalon</span><span class="o">.</span><span class="n">framework</span><span class="o">.</span><span class="n">configuration</span><span class="o">.</span><span class="n">Configuration</span><span class="p">;</span>
-<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">avalon</span><span class="o">.</span><span class="n">framework</span><span class="o">.</span><span class="n">configuration</span><span class="o">.</span><span class="n">DefaultConfigurationBuilder</span><span class="p">;</span>
+<div class="codehilite"><pre><span class="kn">import</span> <span class="nn">org.apache.avalon.framework.configuration.Configuration</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.avalon.framework.configuration.DefaultConfigurationBuilder</span><span class="o">;</span>
-<span class="sr">/*..*/</span>
+<span class="cm">/*..*/</span>
-<span class="n">DefaultConfigurationBuilder</span> <span class="n">cfgBuilder</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultConfigurationBuilder</span><span class="p">();</span>
-<span class="n">Configuration</span> <span class="n">cfg</span> <span class="o">=</span> <span class="n">cfgBuilder</span><span class="o">.</span><span class="n">buildFromFile</span><span class="p">(</span><span class="k">new</span> <span class="n">File</span><span class="p">(</span><span class="s">"C:/Temp/mycfg.xml"</span><span class="p">));</span>
-<span class="n">fopFactory</span><span class="o">.</span><span class="n">setUserConfig</span><span class="p">(</span><span class="n">cfg</span><span class="p">);</span>
+<span class="n">DefaultConfigurationBuilder</span> <span class="n">cfgBuilder</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DefaultConfigurationBuilder</span><span class="o">();</span>
+<span class="n">Configuration</span> <span class="n">cfg</span> <span class="o">=</span> <span class="n">cfgBuilder</span><span class="o">.</span><span class="na">buildFromFile</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="s">"C:/Temp/mycfg.xml"</span><span class="o">));</span>
+<span class="n">fopFactory</span><span class="o">.</span><span class="na">setUserConfig</span><span class="o">(</span><span class="n">cfg</span><span class="o">);</span>
-<span class="sr">/* ..or.. */</span>
+<span class="cm">/* ..or.. */</span>
-<span class="n">fopFactory</span><span class="o">.</span><span class="n">setUserConfig</span><span class="p">(</span><span class="k">new</span> <span class="n">File</span><span class="p">(</span><span class="s">"C:/Temp/mycfg.xml"</span><span class="p">));</span>
+<span class="n">fopFactory</span><span class="o">.</span><span class="na">setUserConfig</span><span class="o">(</span><span class="k">new</span> <span class="n">File</span><span class="o">(</span><span class="s">"C:/Temp/mycfg.xml"</span><span class="o">));</span>
</pre></div>
<p>The layout of the configuration file is described on the <a href="configuration.html">Configuration page</a> .</p>
<h2 id="document-handlers-wzxhzdk50wzxhzdk51">Document Handlers <a id="documenthandlers"></a></h2>
<p>The document handlers are classes that inherit from <code>org.apache.fop.render.intermediate.IFDocumentHandler</code> . This is an interface for which a MIME type specific implementation can be created. This same handler is used either when XSL-FO is used as the input or when Intermediate Format is used. Since IF is output format agnostic, if custom fonts or other configuration information that affect layout (specific to a particular MIME type) are given then FOP needs that contextual information. The document handler provides that context so that when the IF is rendered, it is more visually consistent with FO rendering. The code below shows an example of how a document handler can be used to provide PDF configuration data to the IFSerializer.</p>
-<div class="codehilite"><pre><span class="n">IFDocumentHandler</span> <span class="n">targetHandler</span> <span class="o">=</span> <span class="n">userAgent</span><span class="o">.</span><span class="n">getRendererFactory</span><span class="p">()</span><span class="o">.</span><span class="n">createDocumentHandler</span><span class="p">(</span><span class="n">userAgent</span><span class="p">,</span> <span class="n">MimeConstants</span><span class="o">.</span><span class="n">MIME_PDF</span><span class="p">);</span>
+<div class="codehilite"><pre><span class="n">IFDocumentHandler</span> <span class="n">targetHandler</span> <span class="o">=</span> <span class="n">userAgent</span><span class="o">.</span><span class="na">getRendererFactory</span><span class="o">().</span><span class="na">createDocumentHandler</span><span class="o">(</span><span class="n">userAgent</span><span class="o">,</span> <span class="n">MimeConstants</span><span class="o">.</span><span class="na">MIME_PDF</span><span class="o">);</span>
-<span class="n">IFSerializer</span> <span class="n">ifSerializer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">IFSerializer</span><span class="p">();</span> <span class="sr">//</span><span class="n">Create</span> <span class="n">the</span> <span class="n">IFSerializer</span> <span class="n">to</span> <span class="nb">write</span> <span class="n">the</span> <span class="n">intermediate</span> <span class="nb">format</span>
-<span class="n">ifSerializer</span><span class="o">.</span><span class="n">setContext</span><span class="p">(</span><span class="k">new</span> <span class="n">IFContext</span><span class="p">(</span><span class="n">userAgent</span><span class="p">));</span>
-<span class="n">ifSerializer</span><span class="o">.</span><span class="n">mimicDocumentHandler</span><span class="p">(</span><span class="n">targetHandler</span><span class="p">);</span> <span class="sr">//</span><span class="n">Tell</span> <span class="n">the</span> <span class="n">IFSerializer</span> <span class="n">to</span> <span class="n">mimic</span> <span class="n">the</span> <span class="n">target</span> <span class="nb">format</span>
+<span class="n">IFSerializer</span> <span class="n">ifSerializer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">IFSerializer</span><span class="o">();</span> <span class="c1">//Create the IFSerializer to write the intermediate format</span>
+<span class="n">ifSerializer</span><span class="o">.</span><span class="na">setContext</span><span class="o">(</span><span class="k">new</span> <span class="n">IFContext</span><span class="o">(</span><span class="n">userAgent</span><span class="o">));</span>
+<span class="n">ifSerializer</span><span class="o">.</span><span class="na">mimicDocumentHandler</span><span class="o">(</span><span class="n">targetHandler</span><span class="o">);</span> <span class="c1">//Tell the IFSerializer to mimic the target format</span>
-<span class="n">userAgent</span><span class="o">.</span><span class="n">setDocumentHandlerOverride</span><span class="p">(</span><span class="n">ifSerializer</span><span class="p">);</span> <span class="sr">//</span><span class="n">Make</span> <span class="n">sure</span> <span class="n">the</span> <span class="n">prepared</span> <span class="n">document</span> <span class="n">handler</span> <span class="n">is</span> <span class="n">used</span>
+<span class="n">userAgent</span><span class="o">.</span><span class="na">setDocumentHandlerOverride</span><span class="o">(</span><span class="n">ifSerializer</span><span class="o">);</span> <span class="c1">//Make sure the prepared document handler is used</span>
</pre></div>
Modified: websites/staging/xmlgraphics/trunk/content/fop/trunk/events.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/fop/trunk/events.html (original)
+++ websites/staging/xmlgraphics/trunk/content/fop/trunk/events.html Tue Dec 4 15:59:34 2012
@@ -366,31 +366,31 @@ $(document).ready(function () {
<p>A full example of what is shown here can be found in the <code>examples/embedding/java/embedding/events</code> directory in the FOP distribution. The example can also be accessed <a href="http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/examples/embedding/java/embedding/events/">via the web</a> .</p>
<h3 id="writing-an-eventlistener-wzxhzdk14wzxhzdk15">Writing an EventListener <a id="write-listener"></a></h3>
<p>The following code sample shows a very simple EventListener. It basically just sends all events to System.out (stdout) or System.err (stderr) depending on the event severity.</p>
-<div class="codehilite"><pre><span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">fop</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">Event</span><span class="p">;</span>
-<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">fop</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">EventFormatter</span><span class="p">;</span>
-<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">fop</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">EventListener</span><span class="p">;</span>
-<span class="nb">import</span> <span class="n">org</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">fop</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">EventSeverity</span><span class="p">;</span>
-
-<span class="sr">/** A simple event listener that writes the events to stdout and stderr. */</span>
-<span class="n">public</span> <span class="n">class</span> <span class="n">SysOutEventListener</span> <span class="n">implements</span> <span class="n">EventListener</span> <span class="p">{</span>
-
- <span class="sr">/** {@inheritDoc} */</span>
- <span class="n">public</span> <span class="n">void</span> <span class="n">processEvent</span><span class="p">(</span><span class="n">Event</span> <span class="n">event</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">String</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">EventFormatter</span><span class="o">.</span><span class="nb">format</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
- <span class="n">EventSeverity</span> <span class="n">severity</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">getSeverity</span><span class="p">();</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">severity</span> <span class="o">==</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="o">.</span><span class="n">out</span><span class="o">.</span><span class="n">println</span><span class="p">(</span><span class="s">"[INFO ] "</span> <span class="o">+</span> <span class="n">msg</span><span class="p">);</span>
- <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">severity</span> <span class="o">==</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="n">WARN</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="o">.</span><span class="n">out</span><span class="o">.</span><span class="n">println</span><span class="p">(</span><span class="s">"[WARN ] "</span> <span class="o">+</span> <span class="n">msg</span><span class="p">);</span>
- <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">severity</span> <span class="o">==</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="n">ERROR</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="o">.</span><span class="n">err</span><span class="o">.</span><span class="n">println</span><span class="p">(</span><span class="s">"[ERROR] "</span> <span class="o">+</span> <span class="n">msg</span><span class="p">);</span>
- <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">severity</span> <span class="o">==</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="n">FATAL</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="o">.</span><span class="n">err</span><span class="o">.</span><span class="n">println</span><span class="p">(</span><span class="s">"[FATAL] "</span> <span class="o">+</span> <span class="n">msg</span><span class="p">);</span>
- <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
- <span class="n">assert</span> <span class="n">false</span><span class="p">;</span>
- <span class="p">}</span>
- <span class="p">}</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="kn">import</span> <span class="nn">org.apache.fop.events.Event</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.fop.events.EventFormatter</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.fop.events.EventListener</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.fop.events.model.EventSeverity</span><span class="o">;</span>
+
+<span class="cm">/** A simple event listener that writes the events to stdout and stderr. */</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">SysOutEventListener</span> <span class="kd">implements</span> <span class="n">EventListener</span> <span class="o">{</span>
+
+ <span class="cm">/** {@inheritDoc} */</span>
+ <span class="kd">public</span> <span class="kt">void</span> <span class="nf">processEvent</span><span class="o">(</span><span class="n">Event</span> <span class="n">event</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">String</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">EventFormatter</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
+ <span class="n">EventSeverity</span> <span class="n">severity</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="na">getSeverity</span><span class="o">();</span>
+ <span class="k">if</span> <span class="o">(</span><span class="n">severity</span> <span class="o">==</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="na">INFO</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"[INFO ] "</span> <span class="o">+</span> <span class="n">msg</span><span class="o">);</span>
+ <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">severity</span> <span class="o">==</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="na">WARN</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"[WARN ] "</span> <span class="o">+</span> <span class="n">msg</span><span class="o">);</span>
+ <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">severity</span> <span class="o">==</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="na">ERROR</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">System</span><span class="o">.</span><span class="na">err</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"[ERROR] "</span> <span class="o">+</span> <span class="n">msg</span><span class="o">);</span>
+ <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">severity</span> <span class="o">==</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="na">FATAL</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">System</span><span class="o">.</span><span class="na">err</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"[FATAL] "</span> <span class="o">+</span> <span class="n">msg</span><span class="o">);</span>
+ <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
+ <span class="k">assert</span> <span class="kc">false</span><span class="o">;</span>
+ <span class="o">}</span>
+ <span class="o">}</span>
+<span class="o">}</span>
</pre></div>
@@ -399,8 +399,8 @@ $(document).ready(function () {
<p>It is possible to gather all events for a whole processing run so they can be evaluated afterwards. However, care should be taken about memory consumption since the events provide references to objects inside FOP which may themselves have references to other objects. So holding on to these objects may mean that whole object trees cannot be released!</p>
<h3 id="adding-an-eventlistener-wzxhzdk16wzxhzdk17">Adding an EventListener <a id="add-listener"></a></h3>
<p>To register the event listener with FOP, get the <code>EventBroadcaster</code> which is associated with the user agent ( <code>FOUserAgent</code> ) and add it there:</p>
-<div class="codehilite"><pre><span class="n">FOUserAgent</span> <span class="n">foUserAgent</span> <span class="o">=</span> <span class="n">fopFactory</span><span class="o">.</span><span class="n">newFOUserAgent</span><span class="p">();</span>
-<span class="n">foUserAgent</span><span class="o">.</span><span class="n">getEventBroadcaster</span><span class="p">()</span><span class="o">.</span><span class="n">addEventListener</span><span class="p">(</span><span class="k">new</span> <span class="n">SysOutEventListener</span><span class="p">());</span>
+<div class="codehilite"><pre><span class="n">FOUserAgent</span> <span class="n">foUserAgent</span> <span class="o">=</span> <span class="n">fopFactory</span><span class="o">.</span><span class="na">newFOUserAgent</span><span class="o">();</span>
+<span class="n">foUserAgent</span><span class="o">.</span><span class="na">getEventBroadcaster</span><span class="o">().</span><span class="na">addEventListener</span><span class="o">(</span><span class="k">new</span> <span class="n">SysOutEventListener</span><span class="o">());</span>
</pre></div>
@@ -408,39 +408,39 @@ $(document).ready(function () {
<h3 id="an-additional-listener-example-wzxhzdk18wzxhzdk19">An additional listener example <a id="listener-example1"></a></h3>
<p>Here's an additional example of an event listener:</p>
<p>By default, FOP continues processing even if an image wasn't found. If you have more strict requirements and want FOP to stop if an image is not available, you can do something like the following in the simplest case:</p>
-<div class="codehilite"><pre><span class="n">public</span> <span class="n">class</span> <span class="n">MyEventListener</span> <span class="n">implements</span> <span class="n">EventListener</span> <span class="p">{</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyEventListener</span> <span class="kd">implements</span> <span class="n">EventListener</span> <span class="o">{</span>
- <span class="n">public</span> <span class="n">void</span> <span class="n">processEvent</span><span class="p">(</span><span class="n">Event</span> <span class="n">event</span><span class="p">)</span> <span class="p">{</span>
- <span class="k">if</span> <span class="p">(</span><span class="s">"org.apache.fop.ResourceEventProducer"</span><span class="o">.</span><span class="n">equals</span><span class="p">(</span>
- <span class="n">event</span><span class="o">.</span><span class="n">getEventGroupID</span><span class="p">()))</span> <span class="p">{</span>
- <span class="n">event</span><span class="o">.</span><span class="n">setSeverity</span><span class="p">(</span><span class="n">EventSeverity</span><span class="o">.</span><span class="n">FATAL</span><span class="p">);</span>
- <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
- <span class="sr">//ig</span><span class="n">nore</span> <span class="n">all</span> <span class="n">other</span> <span class="n">events</span> <span class="p">(</span><span class="ow">or</span> <span class="k">do</span> <span class="n">something</span> <span class="n">of</span> <span class="n">your</span> <span class="n">choice</span><span class="p">)</span>
- <span class="p">}</span>
- <span class="p">}</span>
+ <span class="kd">public</span> <span class="kt">void</span> <span class="nf">processEvent</span><span class="o">(</span><span class="n">Event</span> <span class="n">event</span><span class="o">)</span> <span class="o">{</span>
+ <span class="k">if</span> <span class="o">(</span><span class="s">"org.apache.fop.ResourceEventProducer"</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span>
+ <span class="n">event</span><span class="o">.</span><span class="na">getEventGroupID</span><span class="o">()))</span> <span class="o">{</span>
+ <span class="n">event</span><span class="o">.</span><span class="na">setSeverity</span><span class="o">(</span><span class="n">EventSeverity</span><span class="o">.</span><span class="na">FATAL</span><span class="o">);</span>
+ <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
+ <span class="c1">//ignore all other events (or do something of your choice)</span>
+ <span class="o">}</span>
+ <span class="o">}</span>
-<span class="p">}</span>
+<span class="o">}</span>
</pre></div>
<p>Increasing the event severity to FATAL will signal the event broadcaster to throw an exception and stop further processing. In the above case, all resource-related events will cause FOP to stop processing.</p>
<p>You can also customize the exception to throw (you can may throw a RuntimeException or subclass yourself) and/or which event to respond to:</p>
-<div class="codehilite"><pre><span class="n">public</span> <span class="n">class</span> <span class="n">MyEventListener</span> <span class="n">implements</span> <span class="n">EventListener</span> <span class="p">{</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyEventListener</span> <span class="kd">implements</span> <span class="n">EventListener</span> <span class="o">{</span>
- <span class="n">public</span> <span class="n">void</span> <span class="n">processEvent</span><span class="p">(</span><span class="n">Event</span> <span class="n">event</span><span class="p">)</span> <span class="p">{</span>
- <span class="k">if</span> <span class="p">(</span><span class="s">"org.apache.fop.ResourceEventProducer.imageNotFound"</span>
- <span class="o">.</span><span class="n">equals</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">getEventID</span><span class="p">()))</span> <span class="p">{</span>
-
- <span class="sr">//</span><span class="n">Get</span> <span class="n">the</span> <span class="n">FileNotFoundException</span> <span class="n">that</span><span class="s">'s part of the event'</span><span class="n">s</span> <span class="n">parameters</span>
- <span class="n">FileNotFoundException</span> <span class="n">fnfe</span> <span class="o">=</span> <span class="p">(</span><span class="n">FileNotFoundException</span><span class="p">)</span><span class="n">event</span><span class="o">.</span><span class="n">getParam</span><span class="p">(</span><span class="s">"fnfe"</span><span class="p">);</span>
-
- <span class="n">throw</span> <span class="k">new</span> <span class="n">RuntimeException</span><span class="p">(</span><span class="n">EventFormatter</span><span class="o">.</span><span class="nb">format</span><span class="p">(</span><span class="n">event</span><span class="p">),</span> <span class="n">fnfe</span><span class="p">);</span>
- <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
- <span class="sr">//ig</span><span class="n">nore</span> <span class="n">all</span> <span class="n">other</span> <span class="n">events</span> <span class="p">(</span><span class="ow">or</span> <span class="k">do</span> <span class="n">something</span> <span class="n">of</span> <span class="n">your</span> <span class="n">choice</span><span class="p">)</span>
- <span class="p">}</span>
- <span class="p">}</span>
+ <span class="kd">public</span> <span class="kt">void</span> <span class="nf">processEvent</span><span class="o">(</span><span class="n">Event</span> <span class="n">event</span><span class="o">)</span> <span class="o">{</span>
+ <span class="k">if</span> <span class="o">(</span><span class="s">"org.apache.fop.ResourceEventProducer.imageNotFound"</span>
+ <span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">event</span><span class="o">.</span><span class="na">getEventID</span><span class="o">()))</span> <span class="o">{</span>
+
+ <span class="c1">//Get the FileNotFoundException that's part of the event's parameters</span>
+ <span class="n">FileNotFoundException</span> <span class="n">fnfe</span> <span class="o">=</span> <span class="o">(</span><span class="n">FileNotFoundException</span><span class="o">)</span><span class="n">event</span><span class="o">.</span><span class="na">getParam</span><span class="o">(</span><span class="s">"fnfe"</span><span class="o">);</span>
+
+ <span class="k">throw</span> <span class="k">new</span> <span class="nf">RuntimeException</span><span class="o">(</span><span class="n">EventFormatter</span><span class="o">.</span><span class="na">format</span><span class="o">(</span><span class="n">event</span><span class="o">),</span> <span class="n">fnfe</span><span class="o">);</span>
+ <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
+ <span class="c1">//ignore all other events (or do something of your choice)</span>
+ <span class="o">}</span>
+ <span class="o">}</span>
-<span class="p">}</span>
+<span class="o">}</span>
</pre></div>
@@ -450,13 +450,13 @@ $(document).ready(function () {
The event package has been designed in order to be theoretically useful for use cases outside FOP. If you think this is interesting independently from FOP, please talk to <a href="mailto:fop-dev@xmlgraphics.apache.org">us</a>.</p>
<h3 id="producing-and-sending-an-event-wzxhzdk22wzxhzdk23">Producing and sending an event <a id="basic-event-production"></a></h3>
<p>The basics are very simple. Just instantiate an <code>Event</code> object and fill it with the necessary parameters. Then pass it to the <code>EventBroadcaster</code> which distributes the events to the interested listeneners. Here's a code example:</p>
-<div class="codehilite"><pre><span class="n">Event</span> <span class="n">ev</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Event</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="s">"complain"</span><span class="p">,</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="n">WARN</span><span class="p">,</span>
- <span class="n">Event</span><span class="o">.</span><span class="n">paramsBuilder</span><span class="p">()</span>
- <span class="o">.</span><span class="n">param</span><span class="p">(</span><span class="s">"reason"</span><span class="p">,</span> <span class="s">"I'm tired"</span><span class="p">)</span>
- <span class="o">.</span><span class="n">param</span><span class="p">(</span><span class="s">"blah"</span><span class="p">,</span> <span class="k">new</span> <span class="n">Integer</span><span class="p">(</span><span class="mi">23</span><span class="p">))</span>
- <span class="o">.</span><span class="n">build</span><span class="p">());</span>
-<span class="n">EventBroadcaster</span> <span class="n">broadcaster</span> <span class="o">=</span> <span class="p">[</span><span class="n">get</span> <span class="n">it</span> <span class="n">from</span> <span class="n">somewhere</span><span class="p">];</span>
-<span class="n">broadcaster</span><span class="o">.</span><span class="n">broadcastEvent</span><span class="p">(</span><span class="n">ev</span><span class="p">);</span>
+<div class="codehilite"><pre><span class="n">Event</span> <span class="n">ev</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Event</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="s">"complain"</span><span class="o">,</span> <span class="n">EventSeverity</span><span class="o">.</span><span class="na">WARN</span><span class="o">,</span>
+ <span class="n">Event</span><span class="o">.</span><span class="na">paramsBuilder</span><span class="o">()</span>
+ <span class="o">.</span><span class="na">param</span><span class="o">(</span><span class="s">"reason"</span><span class="o">,</span> <span class="s">"I'm tired"</span><span class="o">)</span>
+ <span class="o">.</span><span class="na">param</span><span class="o">(</span><span class="s">"blah"</span><span class="o">,</span> <span class="k">new</span> <span class="n">Integer</span><span class="o">(</span><span class="mi">23</span><span class="o">))</span>
+ <span class="o">.</span><span class="na">build</span><span class="o">());</span>
+<span class="n">EventBroadcaster</span> <span class="n">broadcaster</span> <span class="o">=</span> <span class="o">[</span><span class="n">get</span> <span class="n">it</span> <span class="n">from</span> <span class="n">somewhere</span><span class="o">];</span>
+<span class="n">broadcaster</span><span class="o">.</span><span class="na">broadcastEvent</span><span class="o">(</span><span class="n">ev</span><span class="o">);</span>
</pre></div>
@@ -466,32 +466,32 @@ The event package has been designed in o
<p>The event producer interface does not need to have any implementation. The implementation is produced at runtime by a dynamic proxy created by <code>DefaultEventBroadcaster</code> . The dynamic proxy creates <code>Event</code> instances for each method call against the event producer interface. Each parameter (except "source") is added to the event's parameter map.</p>
<p>To simplify the code needed to get an instance of the event producer interface it is suggested to create a public inner provider class inside the interface.</p>
<p>Here's an example of such an event producer interface:</p>
-<div class="codehilite"><pre><span class="n">public</span> <span class="n">interface</span> <span class="n">MyEventProducer</span> <span class="n">extends</span> <span class="n">EventProducer</span> <span class="p">{</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">MyEventProducer</span> <span class="kd">extends</span> <span class="n">EventProducer</span> <span class="o">{</span>
- <span class="n">public</span> <span class="n">class</span> <span class="n">Provider</span> <span class="p">{</span>
+ <span class="kd">public</span> <span class="kd">class</span> <span class="nc">Provider</span> <span class="o">{</span>
- <span class="n">public</span> <span class="n">static</span> <span class="n">MyEventProducer</span> <span class="n">get</span><span class="p">(</span><span class="n">EventBroadcaster</span> <span class="n">broadcaster</span><span class="p">)</span> <span class="p">{</span>
- <span class="k">return</span> <span class="p">(</span><span class="n">MyEventProducer</span><span class="p">)</span><span class="n">broadcaster</span><span class="o">.</span><span class="n">getEventProducerFor</span><span class="p">(</span><span class="n">MyEventProducer</span><span class="o">.</span><span class="n">class</span><span class="p">);</span>
- <span class="p">}</span>
- <span class="p">}</span>
-
- <span class="o">/**</span>
- <span class="o">*</span> <span class="n">Complain</span> <span class="n">about</span> <span class="n">something</span><span class="o">.</span>
- <span class="o">*</span> <span class="nv">@param</span> <span class="n">source</span> <span class="n">the</span> <span class="n">event</span> <span class="n">source</span>
- <span class="o">*</span> <span class="nv">@param</span> <span class="n">reason</span> <span class="n">the</span> <span class="n">reason</span> <span class="k">for</span> <span class="n">the</span> <span class="n">complaint</span>
- <span class="o">*</span> <span class="nv">@param</span> <span class="n">blah</span> <span class="n">the</span> <span class="n">complaint</span>
- <span class="o">*</span> <span class="nv">@event</span><span class="o">.</span><span class="n">severity</span> <span class="n">WARN</span>
- <span class="o">*/</span>
- <span class="n">void</span> <span class="n">complain</span><span class="p">(</span><span class="n">Object</span> <span class="n">source</span><span class="p">,</span> <span class="n">String</span> <span class="n">reason</span><span class="p">,</span> <span class="nb">int</span> <span class="n">blah</span><span class="p">);</span>
+ <span class="kd">public</span> <span class="kd">static</span> <span class="n">MyEventProducer</span> <span class="nf">get</span><span class="o">(</span><span class="n">EventBroadcaster</span> <span class="n">broadcaster</span><span class="o">)</span> <span class="o">{</span>
+ <span class="k">return</span> <span class="o">(</span><span class="n">MyEventProducer</span><span class="o">)</span><span class="n">broadcaster</span><span class="o">.</span><span class="na">getEventProducerFor</span><span class="o">(</span><span class="n">MyEventProducer</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
+ <span class="o">}</span>
+ <span class="o">}</span>
+
+ <span class="cm">/**</span>
+<span class="cm"> * Complain about something.</span>
+<span class="cm"> * @param source the event source</span>
+<span class="cm"> * @param reason the reason for the complaint</span>
+<span class="cm"> * @param blah the complaint</span>
+<span class="cm"> * @event.severity WARN</span>
+<span class="cm"> */</span>
+ <span class="kt">void</span> <span class="nf">complain</span><span class="o">(</span><span class="n">Object</span> <span class="n">source</span><span class="o">,</span> <span class="n">String</span> <span class="n">reason</span><span class="o">,</span> <span class="kt">int</span> <span class="n">blah</span><span class="o">);</span>
-<span class="p">}</span>
+<span class="o">}</span>
</pre></div>
<p>To produce the same event as in the first example above, you'd use the following code:</p>
-<div class="codehilite"><pre><span class="n">EventBroadcaster</span> <span class="n">broadcaster</span> <span class="o">=</span> <span class="p">[</span><span class="n">get</span> <span class="n">it</span> <span class="n">from</span> <span class="n">somewhere</span><span class="p">];</span>
-<span class="n">TestEventProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="n">TestEventProducer</span><span class="o">.</span><span class="n">Provider</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">broadcaster</span><span class="p">);</span>
-<span class="n">producer</span><span class="o">.</span><span class="n">complain</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="s">"I'm tired"</span><span class="p">,</span> <span class="mi">23</span><span class="p">);</span>
+<div class="codehilite"><pre><span class="n">EventBroadcaster</span> <span class="n">broadcaster</span> <span class="o">=</span> <span class="o">[</span><span class="n">get</span> <span class="n">it</span> <span class="n">from</span> <span class="n">somewhere</span><span class="o">];</span>
+<span class="n">TestEventProducer</span> <span class="n">producer</span> <span class="o">=</span> <span class="n">TestEventProducer</span><span class="o">.</span><span class="na">Provider</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="n">broadcaster</span><span class="o">);</span>
+<span class="n">producer</span><span class="o">.</span><span class="na">complain</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="s">"I'm tired"</span><span class="o">,</span> <span class="mi">23</span><span class="o">);</span>
</pre></div>
Modified: websites/staging/xmlgraphics/trunk/content/fop/trunk/extensions.html
==============================================================================
--- websites/staging/xmlgraphics/trunk/content/fop/trunk/extensions.html (original)
+++ websites/staging/xmlgraphics/trunk/content/fop/trunk/extensions.html Tue Dec 4 15:59:34 2012
@@ -350,8 +350,8 @@ All extensions require the correct use o
<h2 id="fo-extensions-wzxhzdk7wzxhzdk8">FO Extensions <a id="fo-extensions"></a></h2>
<h3 id="namespace-wzxhzdk9wzxhzdk10">Namespace <a id="fox-namespace"></a></h3>
<p>By convention, FO extensions in FOP use the "fox" namespace prefix. To use any of the FO extensions, add a namespace entry for <code>http://xmlgraphics.apache.org/fop/extensions</code> to the root element:</p>
-<div class="codehilite"><pre><span class="o"><</span><span class="n">fo:root</span> <span class="n">xmlns:fo</span><span class="o">=</span><span class="s">"http://www.w3.org/1999/XSL/Format"</span>
- <span class="n">xmlns:fox</span><span class="o">=</span><span class="s">"http://xmlgraphics.apache.org/fop/extensions"</span><span class="o">></span>
+<div class="codehilite"><pre><span class="nt"><fo:root</span> <span class="na">xmlns:fo=</span><span class="s">"http://www.w3.org/1999/XSL/Format"</span>
+ <span class="na">xmlns:fox=</span><span class="s">"http://xmlgraphics.apache.org/fop/extensions"</span><span class="nt">></span>
</pre></div>
@@ -450,17 +450,17 @@ This extension attribute doesn't work fo
<h3 id="color-functions-wzxhzdk29wzxhzdk30">Color functions <a id="color-functions"></a></h3>
<p>XSL-FO supports specifying color using the rgb(), rgb-icc() and system-color() functions. Apache FOP provides additional color functions for special use cases. Please note that using these functions compromises the interoperability of an FO document.</p>
<h4 id="cmykwzxhzdk31wzxhzdk32">cmyk()<a id="color-function-cmyk"></a></h4>
-<p><code>color cmyk(numeric, numeric, numeric, numeric)</code> </p>
+<p><code>color cmyk(numeric, numeric, numeric, numeric)</code></p>
<p>This function will construct a color in device-specific CMYK color space. The numbers must be between 0.0 and 1.0. For output formats that don't support device-specific color space the CMYK value is converted to an sRGB value.</p>
<h4 id="cmyk-pseudo-profilewzxhzdk33wzxhzdk34">#CMYK pseudo-profile<a id="pseudo-color-profiles"></a></h4>
-<p><code>color rgb-icc(numeric, numeric, numeric, #CMYK, numeric, numeric, numeric, numeric)</code> </p>
+<p><code>color rgb-icc(numeric, numeric, numeric, #CMYK, numeric, numeric, numeric, numeric)</code></p>
<p>The <code>rgb-icc</code> function will respond to a pseudo-profile called "#CMYK" which indicates a device-specific CMYK color space. The "#CMYK" profile is implicitely available and doesn't have to be (and cannot be) defined through an <code>fo:color-profile</code> element. It is provided for compatibility with certain commercial XSL-FO implementations. Please note that this is not part of the official specification but rather a convention. The following two color specifications are equivalent:</p>
<ul>
<li>
-<p><code>cmyk(0%,0%,20%,40%)</code> </p>
+<p><code>cmyk(0%,0%,20%,40%)</code></p>
</li>
<li>
-<p><code>rgb-icc(153, 153, 102, #CMYK, 0, 0, 0.2, 0.4)</code> </p>
+<p><code>rgb-icc(153, 153, 102, #CMYK, 0, 0, 0.2, 0.4)</code></p>
</li>
</ul>
<h3 id="rounded-corners-wzxhzdk35wzxhzdk36">Rounded Corners <a id="rounded-corners"></a></h3>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: commits-help@xmlgraphics.apache.org