diff options
author | fotis <fotis@unknown> | 2000-07-15 20:41:07 +0000 |
---|---|---|
committer | fotis <fotis@unknown> | 2000-07-15 20:41:07 +0000 |
commit | 0bbe9941e219bde85b730a760027afa57c84d62d (patch) | |
tree | 7bd32604970fdba89f9601856284bade2e262f45 /lib/Fop.java | |
parent | 9c3547c7eb491d1ef95ebba67af03e027694e414 (diff) | |
download | xmlgraphics-fop-0bbe9941e219bde85b730a760027afa57c84d62d.tar.gz xmlgraphics-fop-0bbe9941e219bde85b730a760027afa57c84d62d.zip |
update to SAX 2 parser
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@193511 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'lib/Fop.java')
-rw-r--r-- | lib/Fop.java | 133 |
1 files changed, 108 insertions, 25 deletions
diff --git a/lib/Fop.java b/lib/Fop.java index aa342945c..03d7debf6 100644 --- a/lib/Fop.java +++ b/lib/Fop.java @@ -1,10 +1,61 @@ +/* + + ============================================================================ + The Apache Software License, Version 1.1 + ============================================================================ + + Copyright (C) 1999 The Apache Software Foundation. All rights reserved. + + Redistribution and use in source and binary forms, with or without modifica- + tion, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. The end-user documentation included with the redistribution, if any, must + include the following acknowledgment: "This product includes software + developed by the Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowledgment may appear in the software itself, if + and wherever such third-party acknowledgments normally appear. + + 4. The names "Fop" and "Apache Software Foundation" must not be used to + endorse or promote products derived from this software without prior + written permission. For written permission, please contact + apache@apache.org. + + 5. Products derived from this software may not be called "Apache", nor may + "Apache" appear in their name, without prior written permission of the + Apache Software Foundation. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- + DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This software consists of voluntary contributions made by many individuals + on behalf of the Apache Software Foundation and was originally created by + James Tauber <jtauber@jtauber.com>. For more information on the Apache + Software Foundation, please see <http://www.apache.org/>. + + */ + // Ant import org.apache.tools.ant.Task; import org.apache.tools.ant.BuildException; import org.apache.fop.apps.*; // SAX -import org.xml.sax.Parser; +import org.xml.sax.XMLReader; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; @@ -18,14 +69,30 @@ import java.io.IOException; import java.io.FileNotFoundException; import java.net.URL; -/* the code is adapted from Fops CommandLine class */ + +/** + * extension to Ant which allows usage of Fop in the + * same way as org.apache.fop.apps.CommandLine (the code is adapted from this class) + * Gets input and output filenames from the script file <br/> + * needed libraries: Sax 2 parser (defaults to Xerces-J), Jimi for images, w3c.jar + * containing org.w3c.dom.svg etc. for svg support + */ + public class Fop { String fofile, pdffile; + /** + * sets the name of the input file + * @param String name of the input fo file + */ public void setFofile(String fofile) { this.fofile = fofile; } + /** + * sets the name of the output file + * @param String name of the output pdf file + */ public void setPdffile(String pdffile) { this.pdffile = pdffile; } @@ -37,26 +104,29 @@ public class Fop { * * @return the created SAX parser */ - static Parser createParser() { - String parserClassName = System.getProperty("org.xml.sax.parser"); + static XMLReader createParser() { + String parserClassName = + System.getProperty("org.xml.sax.parser"); if (parserClassName == null) { - parserClassName = "org.apache.xerces.parsers.SAXParser"; + parserClassName = "org.apache.xerces.parsers.SAXParser"; } - System.err.println("using SAX parser " + parserClassName); + System.out.println("using SAX parser " + parserClassName); try { - return (Parser) Class.forName(parserClassName).newInstance(); + return (XMLReader) + Class.forName(parserClassName).newInstance(); } catch (ClassNotFoundException e) { - System.err.println("Could not find " + parserClassName); + System.err.println("Could not find " + parserClassName); } catch (InstantiationException e) { - System.err.println("Could not instantiate " + parserClassName); + System.err.println("Could not instantiate " + + parserClassName); } catch (IllegalAccessException e) { - System.err.println("Could not access " + parserClassName); + System.err.println("Could not access " + parserClassName); } catch (ClassCastException e) { - System.err.println(parserClassName + " is not a SAX driver"); + System.err.println(parserClassName + " is not a SAX driver"); } return null; - } + } // end: createParser /** * create an InputSource from a file name @@ -81,8 +151,12 @@ public class Fop { catch (java.net.MalformedURLException e) { throw new Error("unexpected MalformedURLException"); } - } + } // end: fileInputSource + /** + * main method, starts execution of this task + * + */ public void execute () throws BuildException { boolean errors = false; String version = Version.getVersion(); @@ -94,29 +168,38 @@ public class Fop { System.err.println("Task Fop - ERROR: Formatting objects file " + fofile + " missing."); } - Parser parser = createParser(); + XMLReader parser = createParser(); if (parser == null) { System.err.println("Task Fop - ERROR: Unable to create SAX parser"); errors = true; } + // setting the parser features + try { + parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true); + } catch (SAXException e) { + System.err.println("Error in setting up parser feature namespace-prefixes"); + System.err.println("You need a parser which supports SAX version 2"); + System.exit(1); + } + if (!errors) { try { - Driver driver = new Driver(); - driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer", version); - driver.addElementMapping("org.apache.fop.fo.StandardElementMapping"); - driver.addElementMapping("org.apache.fop.svg.SVGElementMapping"); - driver.setWriter(new PrintWriter(new FileWriter(pdffile))); - driver.buildFOTree(parser, fileInputSource(fofile)); - driver.format(); - driver.render(); + Driver driver = new Driver(); + driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer", version); + driver.addElementMapping("org.apache.fop.fo.StandardElementMapping"); + driver.addElementMapping("org.apache.fop.svg.SVGElementMapping"); + driver.setWriter(new PrintWriter(new FileWriter(pdffile))); + driver.buildFOTree(parser, fileInputSource(fofile)); + driver.format(); + driver.render(); } catch (Exception e) { - System.err.println("Task Fop - FATAL ERROR: " + e.getMessage()); - System.exit(1); + System.err.println("Task Fop - FATAL ERROR: " + e.getMessage()); + System.exit(1); } } System.out.println("=======================\n"); - } + } // end: execute } |