Author: jeremias
Date: Fri Dec 28 07:11:56 2007
New Revision: 607261

URL: http://svn.apache.org/viewvc?rev=607261&view=rev
Log:
Added -imagein to command-line so (multi-page) images such as TIFF files can be 
converted to PDF and other formats supported by FOP. The default stylesheet can 
be overwritten (with -xslt) if desired.

Added:
    
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/ImageInputHandler.java
   (with props)
    
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/image2fo.xsl
   (with props)
Modified:
    
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/AreaTreeInputHandler.java
   (props changed)
    
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/CommandLineOptions.java
    
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/InputHandler.java

Propchange: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/AreaTreeInputHandler.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/CommandLineOptions.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/CommandLineOptions.java?rev=607261&r1=607260&r2=607261&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/CommandLineOptions.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/CommandLineOptions.java
 Fri Dec 28 07:11:56 2007
@@ -29,6 +29,11 @@
 
 import javax.swing.UIManager;
 
+import org.xml.sax.SAXException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import org.apache.fop.Version;
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
@@ -38,19 +43,12 @@
 import org.apache.fop.pdf.PDFEncryptionManager;
 import org.apache.fop.pdf.PDFEncryptionParams;
 import org.apache.fop.pdf.PDFXMode;
-import org.apache.fop.render.awt.AWTRenderer;
 import org.apache.fop.render.Renderer;
+import org.apache.fop.render.awt.AWTRenderer;
 import org.apache.fop.render.pdf.PDFRenderer;
 import org.apache.fop.render.xml.XMLRenderer;
 import org.apache.fop.util.CommandLineLogger;
 
-// commons logging
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-// SAX
-import org.xml.sax.SAXException;
-
 /**
  * Options parses the commandline arguments
  */
@@ -71,6 +69,8 @@
     public static final int XSLT_INPUT = 2;
     /** input: Area Tree XML file */
     public static final int AREATREE_INPUT = 3;
+    /** input: Image file */
+    public static final int IMAGE_INPUT = 4;
 
     /* show configuration information */
     private Boolean showConfiguration = Boolean.FALSE;
@@ -86,6 +86,8 @@
     private File xmlfile = null;
     /* area tree input file */
     private File areatreefile = null;
+    /* area tree input file */
+    private File imagefile = null;
     /* output file */
     private File outfile = null;
     /* input mode */
@@ -249,6 +251,8 @@
                 i = i + parseXMLInputOption(args, i);
             } else if (args[i].equals("-atin")) {
                 i = i + parseAreaTreeInputOption(args, i);
+            } else if (args[i].equals("-imagein")) {
+                i = i + parseImageInputOption(args, i);
             } else if (args[i].equals("-awt")) {
                 i = i + parseAWTOutputOption(args, i);
             } else if (args[i].equals("-pdf")) {
@@ -594,6 +598,17 @@
         }
     }
 
+    private int parseImageInputOption(String[] args, int i) throws 
FOPException {
+        inputmode = IMAGE_INPUT;
+        if ((i + 1 == args.length)
+                || (args[i + 1].charAt(0) == '-')) {
+            throw new FOPException("you must specify the image file for the 
'-imagein' option");
+        } else {
+            imagefile = new File(args[i + 1]);
+            return 1;
+        }
+    }
+
     private PDFEncryptionParams getPDFEncryptionParams() throws FOPException {
         PDFEncryptionParams params = (PDFEncryptionParams)renderingOptions.get(
                         PDFRenderer.ENCRYPTION_PARAMS); 
@@ -768,6 +783,20 @@
                                               + areatreefile.getAbsolutePath()
                                               + " not found ");
             }
+        } else if (inputmode == IMAGE_INPUT) {
+            if (outputmode.equals(MimeConstants.MIME_XSL_FO)) {
+                throw new FOPException(
+                        "FO output mode is only available if you use -xml and 
-xsl");
+            }
+            if (xmlfile != null) {
+                log.warn("area tree input mode, but XML file is set:");
+                log.error("XML file: " + xmlfile.toString());
+            }
+            if (!imagefile.exists()) {
+                throw new FileNotFoundException("Error: image file "
+                                              + areatreefile.getAbsolutePath()
+                                              + " not found ");
+            }
         }
     }    // end checkSettings
 
@@ -814,6 +843,8 @@
                 return new AreaTreeInputHandler(areatreefile);
             case XSLT_INPUT:
                 return new InputHandler(xmlfile, xsltfile, xsltParams);
+            case IMAGE_INPUT:
+                return new ImageInputHandler(imagefile, xsltfile, xsltParams);
             default:
                 throw new IllegalArgumentException("Error creating 
InputHandler object.");
         }
@@ -920,6 +951,7 @@
             + "  -fo  infile       xsl:fo input file  \n"
             + "  -xml infile       xml input file, must be used together with 
-xsl \n"
             + "  -atin infile      area tree input file \n"
+            + "  -imagein infile   image input file \n"
             + "  -xsl stylesheet   xslt stylesheet \n \n"
             + "  -param name value <value> to use for parameter <name> in xslt 
stylesheet\n"
             + "                    (repeat '-param name value' for each 
parameter)\n \n"

Added: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/ImageInputHandler.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/ImageInputHandler.java?rev=607261&view=auto
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/ImageInputHandler.java
 (added)
+++ 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/ImageInputHandler.java
 Fri Dec 28 07:11:56 2007
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.cli;
+
+import java.io.File;
+import java.io.StringReader;
+import java.util.Vector;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+/**
+ * InputHandler for the images (for example TIFF) as input.
+ */
+public class ImageInputHandler extends InputHandler {
+
+    /**
+     * Main constructor.
+     * @param imagefile the image file
+     * @param xsltfile XSLT file (may be null in which case the default 
stylesheet is used)
+     * @param params Vector of command-line parameters (name, value, 
+     *      name, value, ...) for XSL stylesheet, null if none
+     */
+    public ImageInputHandler(File imagefile, File xsltfile, Vector params) {
+        super(imagefile, xsltfile, params);
+    }
+
+    /** [EMAIL PROTECTED] */
+    protected Source createMainSource() {
+        return new StreamSource(new StringReader(
+                "<image>" + this.sourcefile.toURI().toASCIIString() + 
"</image>"));
+    }
+    
+    /** [EMAIL PROTECTED] */
+    protected Source createXSLTSource() {
+        Source src = super.createXSLTSource();
+        if (src == null) {
+            src = new 
StreamSource(getClass().getResource("image2fo.xsl").toExternalForm());
+        }
+        return src;
+    }
+
+}

Propchange: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/ImageInputHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/ImageInputHandler.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/InputHandler.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/InputHandler.java?rev=607261&r1=607260&r2=607261&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/InputHandler.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/InputHandler.java
 Fri Dec 28 07:11:56 2007
@@ -24,7 +24,6 @@
 import java.io.OutputStream;
 import java.util.Vector;
 
-// Imported TraX classes
 import javax.xml.transform.ErrorListener;
 import javax.xml.transform.Result;
 import javax.xml.transform.Source;
@@ -37,6 +36,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.Fop;
@@ -50,7 +50,8 @@
  */
 public class InputHandler implements ErrorListener, Renderable {
      
-    private File sourcefile = null;  // either FO or XML/XSLT usage
+    /** original source file */
+    protected File sourcefile = null;
     private File stylesheet = null;  // for XML/XSLT usage
     private Vector xsltParams = null; // for XML/XSLT usage
 
@@ -132,6 +133,26 @@
     }
     
     /**
+     * Creates a Source for the main input file.
+     * @return the Source for the main input file
+     */
+    protected Source createMainSource() {
+        return new StreamSource(this.sourcefile);
+    }
+    
+    /**
+     * Creates a Source for the selected stylesheet.
+     * @return the Source for the selected stylesheet or null if there's no 
stylesheet
+     */
+    protected Source createXSLTSource() {
+        if (this.stylesheet != null) {
+            return new StreamSource(this.stylesheet);
+        } else {
+            return null;
+        }
+    }
+    
+    /**
      * Transforms the input document to the input format expected by FOP using 
XSLT.
      * @param result the Result object where the result of the XSL 
transformation is sent to
      * @throws FOPException in case of an error during processing
@@ -142,11 +163,11 @@
             TransformerFactory factory = TransformerFactory.newInstance();
             Transformer transformer;
             
-            if (stylesheet == null) {   // FO Input
+            Source xsltSource = createXSLTSource();
+            if (xsltSource == null) {   // FO Input
                 transformer = factory.newTransformer();
             } else {    // XML/XSLT input
-                transformer = factory.newTransformer(new StreamSource(
-                    stylesheet));
+                transformer = factory.newTransformer(xsltSource);
             
                 // Set the value of parameters, if any, defined for stylesheet
                 if (xsltParams != null) { 
@@ -159,7 +180,7 @@
             transformer.setErrorListener(this);
 
             // Create a SAXSource from the input Source file
-            Source src = new StreamSource(sourcefile);
+            Source src = createMainSource();
 
             // Start XSLT transformation and FOP processing
             transformer.transform(src, result);

Added: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/image2fo.xsl
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/image2fo.xsl?rev=607261&view=auto
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/image2fo.xsl
 (added)
+++ 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/image2fo.xsl
 Fri Dec 28 07:11:56 2007
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<xsl:stylesheet
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+  xmlns:fo="http://www.w3.org/1999/XSL/Format";
+  xmlns:fox="http://xmlgraphics.apache.org/fop/extensions";
+  version="1.0">
+
+  <xsl:output method="xml" indent="yes"/>
+  
+  <xsl:template name="masters">
+    <fo:layout-master-set>
+      <!-- not really used but mandatory -->
+      <fo:simple-page-master master-name="dummy" page-height="29.7cm" 
page-width="21cm">
+        <fo:region-body/>
+      </fo:simple-page-master>
+    </fo:layout-master-set>
+  </xsl:template>
+  
+  <xsl:template match="/image">
+    <fo:root>
+      <xsl:call-template name="masters"/>
+      <fox:external-document>
+        <xsl:attribute name="src"><xsl:value-of select="."/></xsl:attribute>
+      </fox:external-document>
+    </fo:root>
+  </xsl:template>
+  
+</xsl:stylesheet>

Propchange: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/image2fo.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/cli/image2fo.xsl
------------------------------------------------------------------------------
    svn:keywords = Id



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to