From 7a7d2dd354eae700455c51cbe47cfc85f3c3f945 Mon Sep 17 00:00:00 2001 From: Jeremias Maerki Date: Mon, 15 Aug 2005 12:41:56 +0000 Subject: [PATCH] Providing a FO -> RTF example explaining the only difference that getResults() cannot be used. I think I promised that example to someone earlier. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@232805 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/embedding/ExampleFO2RTF.java | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 examples/embedding/java/embedding/ExampleFO2RTF.java diff --git a/examples/embedding/java/embedding/ExampleFO2RTF.java b/examples/embedding/java/embedding/ExampleFO2RTF.java new file mode 100644 index 000000000..c76353f47 --- /dev/null +++ b/examples/embedding/java/embedding/ExampleFO2RTF.java @@ -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. + *

+ * 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); + } + } +} -- 2.39.5