]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Providing a FO -> RTF example explaining the only difference that getResults() cannot...
authorJeremias Maerki <jeremias@apache.org>
Mon, 15 Aug 2005 12:41:56 +0000 (12:41 +0000)
committerJeremias Maerki <jeremias@apache.org>
Mon, 15 Aug 2005 12:41:56 +0000 (12:41 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@232805 13f79535-47bb-0310-9956-ffa450edef68

examples/embedding/java/embedding/ExampleFO2RTF.java [new file with mode: 0644]

diff --git a/examples/embedding/java/embedding/ExampleFO2RTF.java b/examples/embedding/java/embedding/ExampleFO2RTF.java
new file mode 100644 (file)
index 0000000..c76353f
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed 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 embedding;
+
+// Java
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+//JAXP
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.Source;
+import javax.xml.transform.Result;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.transform.sax.SAXResult;
+
+// FOP
+import org.apache.fop.apps.Fop;
+import org.apache.fop.apps.FOPException;
+
+/**
+ * This class demonstrates the conversion of an FO file to RTF using FOP.
+ * <p>
+ * Please note that this is practically the same as the ExampleFO2PDF example. Only
+ * one parameter to the Fop contructor is different!
+ */
+public class ExampleFO2RTF {
+
+    /**
+     * Converts an FO file to a RTF file using FOP
+     * @param fo the FO file
+     * @param rtf the target RTF file
+     * @throws IOException In case of an I/O problem
+     * @throws FOPException In case of a FOP problem
+     */
+    public void convertFO2RTF(File fo, File rtf) throws IOException, FOPException {
+        
+        OutputStream out = null;
+        
+        try {
+            // Construct fop with desired output format
+            Fop fop = new Fop(Fop.RENDER_RTF);
+    
+            // Setup output stream.  Note: Using BufferedOutputStream
+            // for performance reasons (helpful with FileOutputStreams).
+            out = new FileOutputStream(rtf);
+            out = new BufferedOutputStream(out);
+            fop.setOutputStream(out);
+
+            // Setup JAXP using identity transformer
+            TransformerFactory factory = TransformerFactory.newInstance();
+            Transformer transformer = factory.newTransformer(); // identity transformer
+            
+            // Setup input stream
+            Source src = new StreamSource(fo);
+
+            // Resulting SAX events (the generated FO) must be piped through to FOP
+            Result res = new SAXResult(fop.getDefaultHandler());
+            
+            // Start XSLT transformation and FOP processing
+            transformer.transform(src, res);
+            
+            // Please note: getResults() won't work for RTF and other flow formats (like MIF)
+            // as the layout engine is not involved in the conversion. The page-breaking
+            // is done by the application opening the generated file (like MS Word).
+            //FormattingResults foResults = fop.getResults();
+            
+        } catch (Exception e) {
+            e.printStackTrace(System.err);
+            System.exit(-1);
+        } finally {
+            out.close();
+        }
+    }
+
+
+    /**
+     * Main method.
+     * @param args command-line arguments
+     */
+    public static void main(String[] args) {
+        try {
+            System.out.println("FOP ExampleFO2RTF\n");
+            System.out.println("Preparing...");
+            
+            //Setup directories
+            File baseDir = new File(".");
+            File outDir = new File(baseDir, "out");
+            outDir.mkdirs();
+
+            //Setup input and output files            
+            File fofile = new File(baseDir, "xml/fo/helloworld.fo");
+            File rtffile = new File(outDir, "ResultFO2RTF.rtf");
+
+            System.out.println("Input: XSL-FO (" + fofile + ")");
+            System.out.println("Output: PDF (" + rtffile + ")");
+            System.out.println();
+            System.out.println("Transforming...");
+            
+            ExampleFO2RTF app = new ExampleFO2RTF();
+            app.convertFO2RTF(fofile, rtffile);
+            
+            System.out.println("Success!");
+        } catch (Exception e) {
+            e.printStackTrace(System.err);
+            System.exit(-1);
+        }
+    }
+}