From 74955dc126dccccf831748573270d111e5ca5923 Mon Sep 17 00:00:00 2001 From: Simon Pepping Date: Sun, 18 Jul 2004 19:55:17 +0000 Subject: [PATCH] Added alternative example for FO to PDF, using javax.xml.parsers git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197800 13f79535-47bb-0310-9956-ffa450edef68 --- examples/embedding/build.xml | 9 ++ .../java/embedding/ExampleFO2PDFUsingSAX.java | 130 ++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 examples/embedding/java/embedding/ExampleFO2PDFUsingSAX.java diff --git a/examples/embedding/build.xml b/examples/embedding/build.xml index c505475b1..b5c90ae1f 100644 --- a/examples/embedding/build.xml +++ b/examples/embedding/build.xml @@ -138,6 +138,15 @@ + + + + + + + + + diff --git a/examples/embedding/java/embedding/ExampleFO2PDFUsingSAX.java b/examples/embedding/java/embedding/ExampleFO2PDFUsingSAX.java new file mode 100644 index 000000000..ca949f365 --- /dev/null +++ b/examples/embedding/java/embedding/ExampleFO2PDFUsingSAX.java @@ -0,0 +1,130 @@ +/* + * Copyright 1999-2004 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.parsers.SAXParserFactory; +import javax.xml.parsers.FactoryConfigurationError; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.ParserConfigurationException; + +//SAX +import org.xml.sax.helpers.DefaultHandler; +import org.xml.sax.SAXException; + +// FOP +import org.apache.fop.apps.Driver; +import org.apache.fop.apps.FOPException; + +/** + * This class demonstrates the conversion of an FO file to PDF using FOP. + * It uses a SAXParser with FOP as the DefaultHandler + */ +public class ExampleFO2PDFUsingSAX { + + /** + * Converts an FO file to a PDF file using FOP + * @param fo the FO file + * @param pdf the target PDF file + * @throws FactoryConfigurationError + * @throws ParserConfigurationException + * @throws SAXException + * @throws IOException In case of an I/O problem + * @throws FOPException In case of a FOP problem + */ + public void convertFO2PDF(File fo, File pdf) + throws FactoryConfigurationError, + ParserConfigurationException, + FOPException, SAXException, IOException { + + OutputStream out = null; + + try { + // Construct driver and setup output format + Driver driver = new Driver(); + driver.setRenderer(Driver.RENDER_PDF); + + // Setup output stream. Note: Using BufferedOutputStream + // for performance reasons (helpful with FileOutputStreams). + out = new FileOutputStream(pdf); + out = new BufferedOutputStream(out); + driver.setOutputStream(out); + + // Setup SAX parser + // throws FactoryConfigurationError + SAXParserFactory factory = SAXParserFactory.newInstance(); + factory.setNamespaceAware(true); + // throws ParserConfigurationException + SAXParser parser = factory.newSAXParser(); + + // Obtain FOP's DefaultHandler + // throws FOPException + DefaultHandler dh = driver.getDefaultHandler(); + + // Start parsing and FOP processing + // throws SAXException, IOException + parser.parse(fo, dh); + + } finally { + out.close(); + } + } + + + /** + * Main method. + * @param args command-line arguments + */ + public static void main(String[] args) { + try { + System.out.println("FOP ExampleFO2PDFUsingSAX\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 pdffile = new File(outDir, "ResultFO2PDF.pdf"); + + System.out.println("Input: XSL-FO (" + fofile + ")"); + System.out.println("Output: PDF (" + pdffile + ")"); + System.out.println(); + System.out.println("Transforming..."); + + ExampleFO2PDFUsingSAX app = new ExampleFO2PDFUsingSAX(); + app.convertFO2PDF(fofile, pdffile); + + System.out.println("Success!"); + } catch (Exception e) { + e.printStackTrace(System.err); + System.exit(-1); + } + } +} + -- 2.39.5