From: Glen Mazza Date: Sun, 27 Jul 2003 20:16:03 +0000 (+0000) Subject: PrintStarter simplified and then obsoleted; PrinterJob object that the AWTPrintRende... X-Git-Tag: Root_Temp_KnuthStylePageBreaking~1250 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8718e8427e7ed4d9ec009ce896a778f8aa16917b;p=xmlgraphics-fop.git PrintStarter simplified and then obsoleted; PrinterJob object that the AWTPrintRenderer needs is now created within Driver. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196749 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/apps/CommandLineOptions.java b/src/java/org/apache/fop/apps/CommandLineOptions.java index aa66d25b5..51f52ea40 100644 --- a/src/java/org/apache/fop/apps/CommandLineOptions.java +++ b/src/java/org/apache/fop/apps/CommandLineOptions.java @@ -525,15 +525,6 @@ public class CommandLineOptions { throw new FOPException("AWTStarter could not be loaded.", e); } break; - case PRINT_OUTPUT: - try { - starter = new PrintStarter(this); - } catch (FOPException e) { - throw e; - } catch (Exception e) { - throw new FOPException("PrintStarter could not be loaded.", e); - } - break; default: starter = new CommandLineStarter(this); } diff --git a/src/java/org/apache/fop/apps/CommandLineStarter.java b/src/java/org/apache/fop/apps/CommandLineStarter.java index 130193018..579666b82 100644 --- a/src/java/org/apache/fop/apps/CommandLineStarter.java +++ b/src/java/org/apache/fop/apps/CommandLineStarter.java @@ -81,6 +81,7 @@ public class CommandLineStarter extends Starter { * @exception FOPException if there is an error during processing */ public void run() throws FOPException { + BufferedOutputStream bos = null; String version = Version.getVersion(); getLogger().info(version); Driver driver = new Driver(); @@ -88,17 +89,23 @@ public class CommandLineStarter extends Starter { try { driver.setRenderer(commandLineOptions.getRenderer()); - BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream( - commandLineOptions.getOutputFile())); + try { - driver.setOutputStream(bos); + if (commandLineOptions.getOutputFile() != null) { + bos = new BufferedOutputStream(new FileOutputStream( + commandLineOptions.getOutputFile())); + driver.setOutputStream(bos); + } + if (driver.getRenderer() != null) { driver.getRenderer().setOptions( commandLineOptions.getRendererOptions()); } driver.render(inputHandler); } finally { - bos.close(); + if (bos != null) { + bos.close(); + } } System.exit(0); } catch (Exception e) { diff --git a/src/java/org/apache/fop/apps/Driver.java b/src/java/org/apache/fop/apps/Driver.java index 715195bae..6fa34c588 100644 --- a/src/java/org/apache/fop/apps/Driver.java +++ b/src/java/org/apache/fop/apps/Driver.java @@ -50,6 +50,9 @@ */ package org.apache.fop.apps; +// Java +import java.awt.print.PrinterJob; + // FOP import org.apache.fop.fo.ElementMapping; import org.apache.fop.fo.FOTreeBuilder; @@ -58,6 +61,7 @@ import org.apache.fop.fo.StructureHandler; import org.apache.fop.layoutmgr.LayoutHandler; import org.apache.fop.mif.MIFHandler; import org.apache.fop.render.Renderer; +import org.apache.fop.render.awt.AWTPrintRenderer; import org.apache.fop.rtf.renderer.RTFHandler; import org.apache.fop.tools.DocumentInputSource; import org.apache.fop.tools.DocumentReader; @@ -407,7 +411,17 @@ public class Driver implements LogEnabled { case RENDER_AWT: throw new IllegalArgumentException("Use renderer form of setRenderer() for AWT"); case RENDER_PRINT: - throw new IllegalArgumentException("Use renderer form of setRenderer() for PRINT"); + // a PrinterJob object is needed to create this renderer + PrinterJob pj = PrinterJob.getPrinterJob(); + int copies = AWTPrintRenderer.getIntProperty("copies", 1); + pj.setCopies(copies); + if (System.getProperty("dialog") != null) { + if (!pj.printDialog()) { + throw new IllegalArgumentException("Printing cancelled by operator"); + } + } + setRenderer(new AWTPrintRenderer(pj)); + break; case RENDER_PCL: setRenderer("org.apache.fop.render.pcl.PCLRenderer"); break; @@ -439,6 +453,7 @@ public class Driver implements LogEnabled { * @param renderer the renderer instance to use (Note: Logger must be set at this point) */ public void setRenderer(Renderer renderer) { + renderer.setProducer(Version.getVersion()); renderer.setUserAgent(getUserAgent()); this.renderer = renderer; } @@ -528,8 +543,11 @@ public class Driver implements LogEnabled { if (!isInitialized()) { initialize(); } - validateOutputStream(); - + + if (rendererType != RENDER_PRINT && rendererType != RENDER_AWT) { + validateOutputStream(); + } + // TODO: - do this stuff in a better way // PIJ: I guess the structure handler should be created by the renderer. if (rendererType == RENDER_MIF) { diff --git a/src/java/org/apache/fop/apps/PrintStarter.java b/src/java/org/apache/fop/apps/PrintStarter.java deleted file mode 100644 index e8a256bd0..000000000 --- a/src/java/org/apache/fop/apps/PrintStarter.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * $Id: PrintStarter.java,v 1.14 2003/02/27 10:13:06 jeremias Exp $ - * ============================================================================ - * The Apache Software License, Version 1.1 - * ============================================================================ - * - * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modifica- - * tion, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The end-user documentation included with the redistribution, if any, must - * include the following acknowledgment: "This product includes software - * developed by the Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, if - * and wherever such third-party acknowledgments normally appear. - * - * 4. The names "FOP" and "Apache Software Foundation" must not be used to - * endorse or promote products derived from this software without prior - * written permission. For written permission, please contact - * apache@apache.org. - * - * 5. Products derived from this software may not be called "Apache", nor may - * "Apache" appear in their name, without prior written permission of the - * Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- - * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * ============================================================================ - * - * This software consists of voluntary contributions made by many individuals - * on behalf of the Apache Software Foundation and was originally created by - * James Tauber . For more information on the Apache - * Software Foundation, please see . - */ -package org.apache.fop.apps; -/* - * originally contributed by - * Stanislav Gorkhover: stanislav.gorkhover@jcatalog.com - * jCatalog Software AG - * - * Updated by Mark Lillywhite, mark-fop@inomial.com. Modified to - * handle the print job better, added -Ddialog option, removed - * (apparently) redundant copies code, generally cleaned up, and - * added interfaces to the new Render API. - */ -import java.awt.print.PrinterJob; -import org.apache.fop.render.awt.AWTPrintRenderer; - -/** - * This class prints a XSL-FO dokument without interaction. - * At the moment java has not the possibility to configure the printer and it's - * options without interaction (30.03.2000). - * This class allows to print a set of pages (from-to), even/odd pages and many copies. - * - Print from page xxx: property name - start, value int - * - Print to page xxx: property name - end, value int - * - Print even/odd pages: property name - even, value boolean - * - Print xxx copies: property name - copies, value int - */ -public class PrintStarter extends CommandLineStarter { - - /** - * @see org.apache.fop.apps.CommandLineStarter#CommandLineStarter(CommandLineOptions) - */ - public PrintStarter(CommandLineOptions options) throws FOPException { - super(options); - } - - /** - * @see org.apache.fop.apps.Starter#run() - */ - public void run() throws FOPException { - Driver driver = new Driver(); - - PrinterJob pj = PrinterJob.getPrinterJob(); - if (System.getProperty("dialog") != null) { - if (!pj.printDialog()) { - throw new FOPException("Printing cancelled by operator"); - } - } - - AWTPrintRenderer renderer = new AWTPrintRenderer(pj); - int copies = getIntProperty("copies", 1); - pj.setCopies(copies); - - //renderer.setCopies(copies); - - try { - driver.setRenderer(renderer); - driver.render(inputHandler); - } catch (Exception e) { - if (e instanceof FOPException) { - throw (FOPException)e; - } - throw new FOPException(e); - } - - System.exit(0); - } - - private int getIntProperty(String name, int def) { - String propValue = System.getProperty(name); - if (propValue != null) { - try { - return Integer.parseInt(propValue); - } catch (Exception e) { - return def; - } - } else { - return def; - } - } -} // class PrintStarter - diff --git a/src/java/org/apache/fop/render/awt/AWTPrintRenderer.java b/src/java/org/apache/fop/render/awt/AWTPrintRenderer.java index e8a873709..f205bdf31 100644 --- a/src/java/org/apache/fop/render/awt/AWTPrintRenderer.java +++ b/src/java/org/apache/fop/render/awt/AWTPrintRenderer.java @@ -102,7 +102,7 @@ public class AWTPrintRenderer extends AWTRenderer { } } - private int getIntProperty(String name, int def) { + public static int getIntProperty(String name, int def) { String propValue = System.getProperty(name); if (propValue != null) { try {