git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196749 13f79535-47bb-0310-9956-ffa450edef68pull/30/head
throw new FOPException("AWTStarter could not be loaded.", e); | throw new FOPException("AWTStarter could not be loaded.", e); | ||||
} | } | ||||
break; | 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: | default: | ||||
starter = new CommandLineStarter(this); | starter = new CommandLineStarter(this); | ||||
} | } |
* @exception FOPException if there is an error during processing | * @exception FOPException if there is an error during processing | ||||
*/ | */ | ||||
public void run() throws FOPException { | public void run() throws FOPException { | ||||
BufferedOutputStream bos = null; | |||||
String version = Version.getVersion(); | String version = Version.getVersion(); | ||||
getLogger().info(version); | getLogger().info(version); | ||||
Driver driver = new Driver(); | Driver driver = new Driver(); | ||||
try { | try { | ||||
driver.setRenderer(commandLineOptions.getRenderer()); | driver.setRenderer(commandLineOptions.getRenderer()); | ||||
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream( | |||||
commandLineOptions.getOutputFile())); | |||||
try { | try { | ||||
driver.setOutputStream(bos); | |||||
if (commandLineOptions.getOutputFile() != null) { | |||||
bos = new BufferedOutputStream(new FileOutputStream( | |||||
commandLineOptions.getOutputFile())); | |||||
driver.setOutputStream(bos); | |||||
} | |||||
if (driver.getRenderer() != null) { | if (driver.getRenderer() != null) { | ||||
driver.getRenderer().setOptions( | driver.getRenderer().setOptions( | ||||
commandLineOptions.getRendererOptions()); | commandLineOptions.getRendererOptions()); | ||||
} | } | ||||
driver.render(inputHandler); | driver.render(inputHandler); | ||||
} finally { | } finally { | ||||
bos.close(); | |||||
if (bos != null) { | |||||
bos.close(); | |||||
} | |||||
} | } | ||||
System.exit(0); | System.exit(0); | ||||
} catch (Exception e) { | } catch (Exception e) { |
*/ | */ | ||||
package org.apache.fop.apps; | package org.apache.fop.apps; | ||||
// Java | |||||
import java.awt.print.PrinterJob; | |||||
// FOP | // FOP | ||||
import org.apache.fop.fo.ElementMapping; | import org.apache.fop.fo.ElementMapping; | ||||
import org.apache.fop.fo.FOTreeBuilder; | import org.apache.fop.fo.FOTreeBuilder; | ||||
import org.apache.fop.layoutmgr.LayoutHandler; | import org.apache.fop.layoutmgr.LayoutHandler; | ||||
import org.apache.fop.mif.MIFHandler; | import org.apache.fop.mif.MIFHandler; | ||||
import org.apache.fop.render.Renderer; | import org.apache.fop.render.Renderer; | ||||
import org.apache.fop.render.awt.AWTPrintRenderer; | |||||
import org.apache.fop.rtf.renderer.RTFHandler; | import org.apache.fop.rtf.renderer.RTFHandler; | ||||
import org.apache.fop.tools.DocumentInputSource; | import org.apache.fop.tools.DocumentInputSource; | ||||
import org.apache.fop.tools.DocumentReader; | import org.apache.fop.tools.DocumentReader; | ||||
case RENDER_AWT: | case RENDER_AWT: | ||||
throw new IllegalArgumentException("Use renderer form of setRenderer() for AWT"); | throw new IllegalArgumentException("Use renderer form of setRenderer() for AWT"); | ||||
case RENDER_PRINT: | 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: | case RENDER_PCL: | ||||
setRenderer("org.apache.fop.render.pcl.PCLRenderer"); | setRenderer("org.apache.fop.render.pcl.PCLRenderer"); | ||||
break; | break; | ||||
* @param renderer the renderer instance to use (Note: Logger must be set at this point) | * @param renderer the renderer instance to use (Note: Logger must be set at this point) | ||||
*/ | */ | ||||
public void setRenderer(Renderer renderer) { | public void setRenderer(Renderer renderer) { | ||||
renderer.setProducer(Version.getVersion()); | |||||
renderer.setUserAgent(getUserAgent()); | renderer.setUserAgent(getUserAgent()); | ||||
this.renderer = renderer; | this.renderer = renderer; | ||||
} | } | ||||
if (!isInitialized()) { | if (!isInitialized()) { | ||||
initialize(); | initialize(); | ||||
} | } | ||||
validateOutputStream(); | |||||
if (rendererType != RENDER_PRINT && rendererType != RENDER_AWT) { | |||||
validateOutputStream(); | |||||
} | |||||
// TODO: - do this stuff in a better way | // TODO: - do this stuff in a better way | ||||
// PIJ: I guess the structure handler should be created by the renderer. | // PIJ: I guess the structure handler should be created by the renderer. | ||||
if (rendererType == RENDER_MIF) { | if (rendererType == RENDER_MIF) { |
/* | |||||
* $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 <jtauber@jtauber.com>. For more information on the Apache | |||||
* Software Foundation, please see <http://www.apache.org/>. | |||||
*/ | |||||
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 | |||||
} | } | ||||
} | } | ||||
private int getIntProperty(String name, int def) { | |||||
public static int getIntProperty(String name, int def) { | |||||
String propValue = System.getProperty(name); | String propValue = System.getProperty(name); | ||||
if (propValue != null) { | if (propValue != null) { | ||||
try { | try { |