diff options
author | Glen Mazza <gmazza@apache.org> | 2004-03-16 05:25:16 +0000 |
---|---|---|
committer | Glen Mazza <gmazza@apache.org> | 2004-03-16 05:25:16 +0000 |
commit | 6defe06fc7bc46bf8ab9d5d6336991e842a05b0b (patch) | |
tree | bcc0cfa09bcec41bf28fa424bc563627d46bbf48 /src/java/org | |
parent | 2211452edf300b026061569655723094ee883bcd (diff) | |
download | xmlgraphics-fop-6defe06fc7bc46bf8ab9d5d6336991e842a05b0b.tar.gz xmlgraphics-fop-6defe06fc7bc46bf8ab9d5d6336991e842a05b0b.zip |
Code changed to set the Base URL in FOUserAgent, which allows
image.ImageFactory to use this value in order to determine locations
of images given relative to the input source file.
e.g. c:\xml-fop>fop examples\fo\basic\images.fo images.pdf
will now run correctly.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197450 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org')
-rw-r--r-- | src/java/org/apache/fop/apps/Driver.java | 2 | ||||
-rw-r--r-- | src/java/org/apache/fop/apps/FOFileHandler.java | 7 | ||||
-rw-r--r-- | src/java/org/apache/fop/apps/InputHandler.java | 10 | ||||
-rw-r--r-- | src/java/org/apache/fop/apps/XSLTInputHandler.java | 19 | ||||
-rw-r--r-- | src/java/org/apache/fop/image/ImageFactory.java | 1 |
5 files changed, 33 insertions, 6 deletions
diff --git a/src/java/org/apache/fop/apps/Driver.java b/src/java/org/apache/fop/apps/Driver.java index ec4b11aa4..55059cff1 100644 --- a/src/java/org/apache/fop/apps/Driver.java +++ b/src/java/org/apache/fop/apps/Driver.java @@ -248,7 +248,6 @@ public class Driver implements LogEnabled { if (userAgent == null) { userAgent = new FOUserAgent(); userAgent.enableLogging(getLogger()); - userAgent.setBaseURL(""); } return userAgent; } @@ -572,6 +571,7 @@ public class Driver implements LogEnabled { public synchronized void render(InputHandler inputHandler) throws FOPException { XMLReader parser = inputHandler.getParser(); + userAgent.setBaseURL(inputHandler.getBaseURL()); render(parser, inputHandler.getInputSource()); } diff --git a/src/java/org/apache/fop/apps/FOFileHandler.java b/src/java/org/apache/fop/apps/FOFileHandler.java index 28226e677..acefd0cda 100644 --- a/src/java/org/apache/fop/apps/FOFileHandler.java +++ b/src/java/org/apache/fop/apps/FOFileHandler.java @@ -45,6 +45,12 @@ public class FOFileHandler extends InputHandler { */ public FOFileHandler(File fofile) { this.fofile = fofile; + try { + baseURL = + new File(fofile.getAbsolutePath()).getParentFile().toURL().toExternalForm(); + } catch (Exception e) { + baseURL = ""; + } } /** @@ -55,7 +61,6 @@ public class FOFileHandler extends InputHandler { this.foURL = url; } - /** * @see org.apache.fop.apps.InputHandler#getInputSource() */ diff --git a/src/java/org/apache/fop/apps/InputHandler.java b/src/java/org/apache/fop/apps/InputHandler.java index 9597ee324..acb6c50e9 100644 --- a/src/java/org/apache/fop/apps/InputHandler.java +++ b/src/java/org/apache/fop/apps/InputHandler.java @@ -39,6 +39,16 @@ public abstract class InputHandler { */ public abstract InputSource getInputSource(); + protected String baseURL = null; + + /** + * Get the base URL associated with this input source + * @return the input source + */ + public String getBaseURL() { + return baseURL; + } + /** * Get the SAX parser associated with this input handler. * @return the SAX parser diff --git a/src/java/org/apache/fop/apps/XSLTInputHandler.java b/src/java/org/apache/fop/apps/XSLTInputHandler.java index 9634f073f..88771f6b3 100644 --- a/src/java/org/apache/fop/apps/XSLTInputHandler.java +++ b/src/java/org/apache/fop/apps/XSLTInputHandler.java @@ -57,6 +57,12 @@ public class XSLTInputHandler extends InputHandler { public XSLTInputHandler(File xmlfile, File xsltfile, Vector params) throws FOPException { this.xmlSource = new StreamSource(xmlfile); this.xsltSource = new StreamSource(xsltfile); + try { + baseURL = + new File(xmlfile.getAbsolutePath()).getParentFile().toURL().toExternalForm(); + } catch (Exception e) { + baseURL = ""; + } xsltParams = params; } @@ -70,6 +76,12 @@ public class XSLTInputHandler extends InputHandler { public XSLTInputHandler(File xmlfile, File xsltfile) throws FOPException { this.xmlSource = new StreamSource(xmlfile); this.xsltSource = new StreamSource(xsltfile); + try { + baseURL = + new File(xmlfile.getAbsolutePath()).getParentFile().toURL().toExternalForm(); + } catch (Exception e) { + baseURL = ""; + } } /** @@ -144,11 +156,10 @@ public class XSLTInputHandler extends InputHandler { saxTFactory.newXMLFilter(xsltSource); /* if (inParams != null) { - Transformer transformer = ??? how to obtain from an XMLFilter? - int nParams = inParams.size(); - + // parameters currently not settable with an XMLFilter for (int i = 0; i < nParams; i += 2) { - transformer.setParameter((String) inParams.elementAt(i), + // setParameter() method doesn't exist + xmlfilter.setParameter((String) inParams.elementAt(i), (String) inParams.elementAt(i + 1)); } } diff --git a/src/java/org/apache/fop/image/ImageFactory.java b/src/java/org/apache/fop/image/ImageFactory.java index bf19d3f10..45aef78c5 100644 --- a/src/java/org/apache/fop/image/ImageFactory.java +++ b/src/java/org/apache/fop/image/ImageFactory.java @@ -219,6 +219,7 @@ public class ImageFactory { // Get the absolute URL URL absoluteURL = null; InputStream in = null; + try { in = ua.getStream(href); } catch (IOException ioe) { |