git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196746 13f79535-47bb-0310-9956-ffa450edef68pull/30/head
import java.awt.event.WindowEvent; | import java.awt.event.WindowEvent; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
// SAX | |||||
import org.xml.sax.XMLReader; | |||||
/** | /** | ||||
* AWT Viewer starter. | * AWT Viewer starter. | ||||
* Originally contributed by: | * Originally contributed by: | ||||
private PreviewDialog frame; | private PreviewDialog frame; | ||||
private Translator translator; | private Translator translator; | ||||
private Driver driver; | private Driver driver; | ||||
private XMLReader parser; | |||||
/** | /** | ||||
* Construct an AWTStarter | * Construct an AWTStarter | ||||
renderer.setComponent(frame); | renderer.setComponent(frame); | ||||
driver = new Driver(); | driver = new Driver(); | ||||
driver.setRenderer(renderer); | driver.setRenderer(renderer); | ||||
parser = inputHandler.getParser(); | |||||
if (parser == null) { | |||||
throw new FOPException("Unable to create SAX parser"); | |||||
} | |||||
setParserFeatures(parser); | |||||
} | } | ||||
/** | /** | ||||
driver.reset(); | driver.reset(); | ||||
try { | try { | ||||
frame.setStatus(translator.getString("Status.Build.FO.tree")); | frame.setStatus(translator.getString("Status.Build.FO.tree")); | ||||
driver.render(parser, inputHandler.getInputSource()); | |||||
driver.render(inputHandler); | |||||
frame.setStatus(translator.getString("Status.Show")); | frame.setStatus(translator.getString("Status.Show")); | ||||
frame.showPage(); | frame.showPage(); | ||||
} catch (Exception e) { | } catch (Exception e) { |
+ " see options with \"-print help\" \n\n" | + " see options with \"-print help\" \n\n" | ||||
+ " [Examples]\n" + " Fop foo.fo foo.pdf \n" | + " [Examples]\n" + " Fop foo.fo foo.pdf \n" | ||||
+ " Fop -fo foo.fo -pdf foo.pdf (does the same as the previous line)\n" | + " Fop -fo foo.fo -pdf foo.pdf (does the same as the previous line)\n" | ||||
+ " Fop -xsl foo.xsl -xml foo.xml -pdf foo.pdf\n" | |||||
+ " Fop -xml foo.xml -xsl foo.xsl -pdf foo.pdf\n" | |||||
+ " Fop foo.fo -mif foo.mif\n" | + " Fop foo.fo -mif foo.mif\n" | ||||
+ " Fop foo.fo -rtf foo.rtf\n" | + " Fop foo.fo -rtf foo.rtf\n" | ||||
+ " Fop foo.fo -print or Fop -print foo.fo \n" | + " Fop foo.fo -print or Fop -print foo.fo \n" |
*/ | */ | ||||
package org.apache.fop.apps; | package org.apache.fop.apps; | ||||
// SAX | |||||
import org.xml.sax.XMLReader; | |||||
// Java | // Java | ||||
import java.io.BufferedOutputStream; | import java.io.BufferedOutputStream; | ||||
import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
*/ | */ | ||||
public void run() throws FOPException { | public void run() throws FOPException { | ||||
String version = Version.getVersion(); | String version = Version.getVersion(); | ||||
getLogger().info(version); | getLogger().info(version); | ||||
XMLReader parser = inputHandler.getParser(); | |||||
setParserFeatures(parser); | |||||
Driver driver = new Driver(); | Driver driver = new Driver(); | ||||
setupLogger(driver); | setupLogger(driver); | ||||
driver.initialize(); | |||||
try { | try { | ||||
driver.setRenderer(commandLineOptions.getRenderer()); | driver.setRenderer(commandLineOptions.getRenderer()); | ||||
driver.getRenderer().setOptions( | driver.getRenderer().setOptions( | ||||
commandLineOptions.getRendererOptions()); | commandLineOptions.getRendererOptions()); | ||||
} | } | ||||
driver.render(parser, inputHandler.getInputSource()); | |||||
driver.render(inputHandler); | |||||
} finally { | } finally { | ||||
bos.close(); | bos.close(); | ||||
} | } |
return treeBuilder; | return treeBuilder; | ||||
} | } | ||||
/** | |||||
* Render the FO document read by a SAX Parser from an InputHandler | |||||
* @param InputHandler the input handler containing the source and | |||||
* parser information. | |||||
* @throws FOPException if anything goes wrong. | |||||
*/ | |||||
public synchronized void render(InputHandler inputHandler) | |||||
throws FOPException { | |||||
XMLReader parser = inputHandler.getParser(); | |||||
inputHandler.setParserFeatures(parser); | |||||
render(parser, inputHandler.getInputSource()); | |||||
} | |||||
/** | /** | ||||
* Render the FO document read by a SAX Parser from an InputSource. | * Render the FO document read by a SAX Parser from an InputSource. | ||||
* @param parser the SAX parser. | * @param parser the SAX parser. |
* @throws FOPException if processing this InputHandler fails | * @throws FOPException if processing this InputHandler fails | ||||
*/ | */ | ||||
public abstract void run(Driver driver) throws FOPException; | public abstract void run(Driver driver) throws FOPException; | ||||
/** | |||||
* Sets the parser features on an XMLReader | |||||
* @param parser XMLReader to set features on | |||||
* @throws FOPException if the XMLReader doesn't support the feature that | |||||
* need to be set | |||||
*/ | |||||
public static void setParserFeatures(XMLReader parser) throws FOPException { | |||||
try { | |||||
parser.setFeature("http://xml.org/sax/features/namespace-prefixes", | |||||
true); | |||||
} catch (SAXException e) { | |||||
throw new FOPException("Error: You need a parser which allows the" | |||||
+ " http://xml.org/sax/features/namespace-prefixes" | |||||
+ " feature to be set to true to support namespaces", e); | |||||
} | |||||
} | |||||
} | } | ||||
* (apparently) redundant copies code, generally cleaned up, and | * (apparently) redundant copies code, generally cleaned up, and | ||||
* added interfaces to the new Render API. | * added interfaces to the new Render API. | ||||
*/ | */ | ||||
import org.xml.sax.XMLReader; | |||||
import java.awt.print.PrinterJob; | import java.awt.print.PrinterJob; | ||||
import org.apache.fop.render.awt.AWTPrintRenderer; | import org.apache.fop.render.awt.AWTPrintRenderer; | ||||
public void run() throws FOPException { | public void run() throws FOPException { | ||||
Driver driver = new Driver(); | Driver driver = new Driver(); | ||||
String version = Version.getVersion(); | |||||
//log.debug(version); | |||||
XMLReader parser = inputHandler.getParser(); | |||||
setParserFeatures(parser); | |||||
PrinterJob pj = PrinterJob.getPrinterJob(); | PrinterJob pj = PrinterJob.getPrinterJob(); | ||||
if (System.getProperty("dialog") != null) { | if (System.getProperty("dialog") != null) { | ||||
if (!pj.printDialog()) { | if (!pj.printDialog()) { | ||||
try { | try { | ||||
driver.setRenderer(renderer); | driver.setRenderer(renderer); | ||||
driver.render(parser, inputHandler.getInputSource()); | |||||
driver.render(inputHandler); | |||||
} catch (Exception e) { | } catch (Exception e) { | ||||
if (e instanceof FOPException) { | if (e instanceof FOPException) { | ||||
throw (FOPException)e; | throw (FOPException)e; |
// Avalon | // Avalon | ||||
import org.apache.avalon.framework.logger.AbstractLogEnabled; | import org.apache.avalon.framework.logger.AbstractLogEnabled; | ||||
// SAX | |||||
import org.xml.sax.XMLReader; | |||||
import org.xml.sax.SAXException; | |||||
/** | /** | ||||
* Abstract super class. | * Abstract super class. | ||||
* Creates a SAX Parser (defaulting to Xerces). | * Creates a SAX Parser (defaulting to Xerces). | ||||
*/ | */ | ||||
public abstract void run() throws FOPException; | public abstract void run() throws FOPException; | ||||
/** | |||||
* Sets the parser features on an XMLReader | |||||
* @param parser XMLReader to set features on | |||||
* @throws FOPException if the XMLReader doesn't support the feature that | |||||
* need to be set | |||||
*/ | |||||
public void setParserFeatures(XMLReader parser) throws FOPException { | |||||
try { | |||||
parser.setFeature("http://xml.org/sax/features/namespace-prefixes", | |||||
true); | |||||
} catch (SAXException e) { | |||||
throw new FOPException("Error: You need a parser which allows the" | |||||
+ " http://xml.org/sax/features/namespace-prefixes" | |||||
+ " feature to be set to true to support namespaces", e); | |||||
} | |||||
} | |||||
} | } |
import org.w3c.dom.Document; | import org.w3c.dom.Document; | ||||
import org.w3c.dom.Node; | import org.w3c.dom.Node; | ||||
import org.w3c.dom.NodeList; | import org.w3c.dom.NodeList; | ||||
import org.xml.sax.XMLReader; | |||||
import org.xml.sax.SAXException; | |||||
/** | /** | ||||
* TestConverter is used to process a set of tests specified in | * TestConverter is used to process a set of tests specified in | ||||
+ xsl)); | + xsl)); | ||||
} | } | ||||
XMLReader parser = inputHandler.getParser(); | |||||
setParserFeatures(parser); | |||||
Driver driver = new Driver(); | Driver driver = new Driver(); | ||||
setupLogger(driver, "fop"); | setupLogger(driver, "fop"); | ||||
driver.initialize(); | |||||
FOUserAgent userAgent = new FOUserAgent(); | FOUserAgent userAgent = new FOUserAgent(); | ||||
userAgent.setBaseURL(baseURL); | userAgent.setBaseURL(baseURL); | ||||
driver.setUserAgent(userAgent); | driver.setUserAgent(userAgent); | ||||
new java.io.FileOutputStream(new File(destdir, | new java.io.FileOutputStream(new File(destdir, | ||||
outname + (outputPDF ? ".pdf" : ".at.xml"))))); | outname + (outputPDF ? ".pdf" : ".at.xml"))))); | ||||
getLogger().debug("ddir:" + destdir + " on:" + outname + ".pdf"); | getLogger().debug("ddir:" + destdir + " on:" + outname + ".pdf"); | ||||
driver.render(parser, inputHandler.getInputSource()); | |||||
driver.render(inputHandler); | |||||
// check difference | // check difference | ||||
if (compare != null) { | if (compare != null) { | ||||
return false; | return false; | ||||
} | } | ||||
private void setParserFeatures(XMLReader parser) throws FOPException { | |||||
try { | |||||
parser.setFeature("http://xml.org/sax/features/namespace-prefixes", | |||||
true); | |||||
} catch (SAXException e) { | |||||
throw new FOPException("Error in setting up parser feature namespace-prefixes\n" | |||||
+ "You need a parser which supports SAX version 2", e); | |||||
} | |||||
} | |||||
private Node locateResult(Node testcase, String id) { | private Node locateResult(Node testcase, String id) { | ||||
NodeList cases = testcase.getChildNodes(); | NodeList cases = testcase.getChildNodes(); | ||||
for (int count = 0; count < cases.getLength(); count++) { | for (int count = 0; count < cases.getLength(); count++) { |
import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
import org.apache.tools.ant.util.GlobPatternMapper; | import org.apache.tools.ant.util.GlobPatternMapper; | ||||
// SAX | |||||
import org.xml.sax.XMLReader; | |||||
// Java | // Java | ||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
private void render(File foFile, File outFile, | private void render(File foFile, File outFile, | ||||
int renderer) throws FOPException { | int renderer) throws FOPException { | ||||
InputHandler inputHandler = new FOInputHandler(foFile); | InputHandler inputHandler = new FOInputHandler(foFile); | ||||
XMLReader parser = inputHandler.getParser(); | |||||
setParserFeatures(parser); | |||||
OutputStream out = null; | OutputStream out = null; | ||||
try { | try { | ||||
try { | try { | ||||
Driver driver = new Driver(); | Driver driver = new Driver(); | ||||
setupLogger(driver); | setupLogger(driver); | ||||
driver.initialize(); | |||||
FOUserAgent userAgent = new FOUserAgent(); | FOUserAgent userAgent = new FOUserAgent(); | ||||
userAgent.setBaseURL(this.baseURL); | userAgent.setBaseURL(this.baseURL); | ||||
userAgent.enableLogging(getLogger()); | userAgent.enableLogging(getLogger()); | ||||
driver.setUserAgent(userAgent); | driver.setUserAgent(userAgent); | ||||
driver.setRenderer(renderer); | driver.setRenderer(renderer); | ||||
driver.setOutputStream(out); | driver.setOutputStream(out); | ||||
driver.render(parser, inputHandler.getInputSource()); | |||||
driver.render(inputHandler); | |||||
} catch (Exception ex) { | } catch (Exception ex) { | ||||
throw new BuildException(ex); | throw new BuildException(ex); | ||||
} finally { | } finally { |