12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 org.apache.fop.cli;
-
- // java
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.PrintStream;
- import java.util.Locale;
- import java.util.Map;
- import java.util.Vector;
-
- import javax.swing.UIManager;
-
- import org.xml.sax.SAXException;
-
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
-
- import org.apache.fop.Version;
- import org.apache.fop.accessibility.Accessibility;
- import org.apache.fop.apps.FOPException;
- import org.apache.fop.apps.FOUserAgent;
- import org.apache.fop.apps.FopFactory;
- import org.apache.fop.apps.MimeConstants;
- import org.apache.fop.fonts.FontManager;
- import org.apache.fop.pdf.PDFAMode;
- import org.apache.fop.pdf.PDFEncryptionManager;
- import org.apache.fop.pdf.PDFEncryptionParams;
- import org.apache.fop.pdf.PDFXMode;
- import org.apache.fop.render.Renderer;
- import org.apache.fop.render.awt.AWTRenderer;
- import org.apache.fop.render.intermediate.IFContext;
- import org.apache.fop.render.intermediate.IFDocumentHandler;
- import org.apache.fop.render.intermediate.IFSerializer;
- import org.apache.fop.render.pdf.PDFConfigurationConstants;
- import org.apache.fop.render.print.PagesMode;
- import org.apache.fop.render.print.PrintRenderer;
- import org.apache.fop.render.xml.XMLRenderer;
- import org.apache.fop.util.CommandLineLogger;
-
- /**
- * Options parses the commandline arguments
- */
- public class CommandLineOptions {
-
- /** Used to indicate that only the result of the XSL transformation should be output */
- public static final int RENDER_NONE = -1;
-
- /* These following constants are used to describe the input (either .FO, .XML/.XSL or
- * intermediate format)
- */
-
- /** (input) not set */
- public static final int NOT_SET = 0;
- /** input: fo file */
- public static final int FO_INPUT = 1;
- /** input: xml+xsl file */
- public static final int XSLT_INPUT = 2;
- /** input: Area Tree XML file */
- public static final int AREATREE_INPUT = 3;
- /** input: Intermediate Format XML file */
- public static final int IF_INPUT = 4;
- /** input: Image file */
- public static final int IMAGE_INPUT = 5;
-
- /* show configuration information */
- private Boolean showConfiguration = Boolean.FALSE;
- /* for area tree XML output, only down to block area level */
- private Boolean suppressLowLevelAreas = Boolean.FALSE;
- /* user configuration file */
- private File userConfigFile = null;
- /* input fo file */
- private File fofile = null;
- /* xsltfile (xslt transformation as input) */
- private File xsltfile = null;
- /* xml file (xslt transformation as input) */
- private File xmlfile = null;
- /* area tree input file */
- private File areatreefile = null;
- /* intermediate format input file */
- private File iffile = null;
- /* area tree input file */
- private File imagefile = null;
- /* output file */
- private File outfile = null;
- /* input mode */
- private int inputmode = NOT_SET;
- /* output mode */
- private String outputmode = null;
- /* true if System.in (stdin) should be used for the input file */
- private boolean useStdIn = false;
- /* true if System.out (stdout) should be used for the output file */
- private boolean useStdOut = false;
- /* true if a catalog resolver should be used for entity and uri resolution */
- private boolean useCatalogResolver = false;
- /* rendering options (for the user agent) */
- private Map renderingOptions = new java.util.HashMap();
- /* target resolution (for the user agent) */
- private int targetResolution = 0;
- /* control memory-conservation policy */
- private boolean conserveMemoryPolicy = false;
-
- private FopFactory factory = FopFactory.newInstance();
- private FOUserAgent foUserAgent;
-
- private InputHandler inputHandler;
-
- private Log log;
-
- private Vector xsltParams = null;
-
- private String mimicRenderer = null;
-
- private boolean flushCache = false;
-
- /**
- * Construct a command line option object.
- */
- public CommandLineOptions() {
- LogFactory logFactory = LogFactory.getFactory();
-
- // Enable the simple command line logging when no other logger is
- // defined.
- if (System.getProperty("org.apache.commons.logging.Log") == null) {
- logFactory.setAttribute("org.apache.commons.logging.Log",
- CommandLineLogger.class.getName());
- setLogLevel("info");
- }
-
- log = LogFactory.getLog("FOP");
- }
-
- /**
- * Parses the command line arguments.
- *
- * @param args the command line arguments.
- * @throws FOPException for general errors
- * @throws IOException if the the configuration file could not be loaded
- * @return true if the processing can continue, false to abort
- */
- public boolean parse(String[] args)
- throws FOPException, IOException {
- boolean optionsParsed = true;
-
- try {
- optionsParsed = parseOptions(args);
- if (optionsParsed) {
- if (showConfiguration == Boolean.TRUE) {
- dumpConfiguration();
- }
- checkSettings();
- setUserConfig();
- if (flushCache) {
- flushCache();
- }
- //Factory config is set up, now we can create the user agent
- foUserAgent = factory.newFOUserAgent();
- foUserAgent.getRendererOptions().putAll(renderingOptions);
- if (targetResolution != 0) {
- foUserAgent.setTargetResolution(targetResolution);
- }
- addXSLTParameter("fop-output-format", getOutputFormat());
- addXSLTParameter("fop-version", Version.getVersion());
- foUserAgent.setConserveMemoryPolicy(conserveMemoryPolicy);
- } else {
- return false;
- }
- } catch (FOPException e) {
- printUsage(System.err);
- throw e;
- } catch (java.io.FileNotFoundException e) {
- printUsage(System.err);
- throw e;
- }
-
- inputHandler = createInputHandler();
-
- if (MimeConstants.MIME_FOP_AWT_PREVIEW.equals(outputmode)) {
- //set the system look&feel for the preview dialog
- try {
- UIManager.setLookAndFeel(
- UIManager.getSystemLookAndFeelClassName());
- } catch (Exception e) {
- System.err.println("Couldn't set system look & feel!");
- }
-
- AWTRenderer renderer = new AWTRenderer(true);
- renderer.setRenderable(inputHandler); //set before user agent!
- renderer.setUserAgent(foUserAgent);
- foUserAgent.setRendererOverride(renderer);
- } else if (MimeConstants.MIME_FOP_AREA_TREE.equals(outputmode)
- && mimicRenderer != null) {
- // render from FO to Intermediate Format
- Renderer targetRenderer = foUserAgent.getRendererFactory().createRenderer(
- foUserAgent, mimicRenderer);
- XMLRenderer xmlRenderer = new XMLRenderer();
- xmlRenderer.setUserAgent(foUserAgent);
-
- //Tell the XMLRenderer to mimic the target renderer
- xmlRenderer.mimicRenderer(targetRenderer);
-
- //Make sure the prepared XMLRenderer is used
- foUserAgent.setRendererOverride(xmlRenderer);
- } else if (MimeConstants.MIME_FOP_IF.equals(outputmode)
- && mimicRenderer != null) {
- // render from FO to Intermediate Format
- IFSerializer serializer = new IFSerializer();
- serializer.setContext(new IFContext(foUserAgent));
-
- IFDocumentHandler targetHandler
- = foUserAgent.getRendererFactory().createDocumentHandler(
- foUserAgent, mimicRenderer);
- serializer.mimicDocumentHandler(targetHandler);
-
- //Make sure the prepared serializer is used
- foUserAgent.setDocumentHandlerOverride(serializer);
- }
- return true;
- }
-
- /**
- * @return the InputHandler instance defined by the command-line options.
- */
- public InputHandler getInputHandler() {
- return inputHandler;
- }
-
- /**
- * Get the logger.
- * @return the logger
- */
- public Log getLogger() {
- return log;
- }
-
- private void addXSLTParameter(String name, String value) {
- if (xsltParams == null) {
- xsltParams = new Vector();
- }
- xsltParams.addElement(name);
- xsltParams.addElement(value);
- }
-
- /**
- * Parses the command line arguments.
- *
- * @return true if processing can continue, false if it should stop (nothing to do)
- * @exception FOPException if there was an error in the format of the options
- */
- private boolean parseOptions(String[] args) throws FOPException {
- // do not throw an exception for no args
- if (args.length == 0) {
- printVersion();
- printUsage(System.out);
- return false;
- }
- for (int i = 0; i < args.length; i++) {
- if (args[i].equals("-x")
- || args[i].equals("--dump-config")) {
- showConfiguration = Boolean.TRUE;
- } else if (args[i].equals("-c")) {
- i = i + parseConfigurationOption(args, i);
- } else if (args[i].equals("-l")) {
- i = i + parseLanguageOption(args, i);
- } else if (args[i].equals("-s")) {
- suppressLowLevelAreas = Boolean.TRUE;
- } else if (args[i].equals("-d")) {
- setLogOption("debug", "debug");
- } else if (args[i].equals("-r")) {
- factory.setStrictValidation(false);
- } else if (args[i].equals("-conserve")) {
- conserveMemoryPolicy = true;
- } else if (args[i].equals("-flush")) {
- flushCache = true;
- } else if (args[i].equals("-cache")) {
- parseCacheOption(args, i);
- } else if (args[i].equals("-dpi")) {
- i = i + parseResolution(args, i);
- } else if (args[i].equals("-q") || args[i].equals("--quiet")) {
- setLogOption("quiet", "error");
- } else if (args[i].equals("-fo")) {
- i = i + parseFOInputOption(args, i);
- } else if (args[i].equals("-xsl")) {
- i = i + parseXSLInputOption(args, i);
- } else if (args[i].equals("-xml")) {
- i = i + parseXMLInputOption(args, i);
- } else if (args[i].equals("-atin")) {
- i = i + parseAreaTreeInputOption(args, i);
- } else if (args[i].equals("-ifin")) {
- i = i + parseIFInputOption(args, i);
- } else if (args[i].equals("-imagein")) {
- i = i + parseImageInputOption(args, i);
- } else if (args[i].equals("-awt")) {
- i = i + parseAWTOutputOption(args, i);
- } else if (args[i].equals("-pdf")) {
- i = i + parsePDFOutputOption(args, i, null);
- } else if (args[i].equals("-pdfa1b")) {
- i = i + parsePDFOutputOption(args, i, "PDF/A-1b");
- } else if (args[i].equals("-mif")) {
- i = i + parseMIFOutputOption(args, i);
- } else if (args[i].equals("-rtf")) {
- i = i + parseRTFOutputOption(args, i);
- } else if (args[i].equals("-tiff")) {
- i = i + parseTIFFOutputOption(args, i);
- } else if (args[i].equals("-png")) {
- i = i + parsePNGOutputOption(args, i);
- } else if (args[i].equals("-print")) {
- // show print help
- if (i + 1 < args.length) {
- if (args[i + 1].equals("help")) {
- printUsagePrintOutput();
- return false;
- }
- }
- i = i + parsePrintOutputOption(args, i);
- } else if (args[i].equals("-copies")) {
- i = i + parseCopiesOption(args, i);
- } else if (args[i].equals("-pcl")) {
- i = i + parsePCLOutputOption(args, i);
- } else if (args[i].equals("-ps")) {
- i = i + parsePostscriptOutputOption(args, i);
- } else if (args[i].equals("-txt")) {
- i = i + parseTextOutputOption(args, i);
- } else if (args[i].equals("-svg")) {
- i = i + parseSVGOutputOption(args, i);
- } else if (args[i].equals("-afp")) {
- i = i + parseAFPOutputOption(args, i);
- } else if (args[i].equals("-foout")) {
- i = i + parseFOOutputOption(args, i);
- } else if (args[i].equals("-out")) {
- i = i + parseCustomOutputOption(args, i);
- } else if (args[i].equals("-at")) {
- i = i + parseAreaTreeOption(args, i);
- } else if (args[i].equals("-if")) {
- i = i + parseIntermediateFormatOption(args, i);
- } else if (args[i].equals("-a")) {
- this.renderingOptions.put(Accessibility.ACCESSIBILITY, Boolean.TRUE);
- } else if (args[i].equals("-v")) {
- /* Currently just print the version */
- printVersion();
- } else if (args[i].equals("-param")) {
- if (i + 2 < args.length) {
- String name = args[++i];
- String expression = args[++i];
- addXSLTParameter(name, expression);
- } else {
- throw new FOPException("invalid param usage: use -param <name> <value>");
- }
- } else if (args[i].equals("-catalog")) {
- useCatalogResolver = true;
- } else if (args[i].equals("-o")) {
- i = i + parsePDFOwnerPassword(args, i);
- } else if (args[i].equals("-u")) {
- i = i + parsePDFUserPassword(args, i);
- } else if (args[i].equals("-pdfprofile")) {
- i = i + parsePDFProfile(args, i);
- } else if (args[i].equals("-noprint")) {
- getPDFEncryptionParams().setAllowPrint(false);
- } else if (args[i].equals("-nocopy")) {
- getPDFEncryptionParams().setAllowCopyContent(false);
- } else if (args[i].equals("-noedit")) {
- getPDFEncryptionParams().setAllowEditContent(false);
- } else if (args[i].equals("-noannotations")) {
- getPDFEncryptionParams().setAllowEditAnnotations(false);
- } else if (args[i].equals("-nofillinforms")) {
- getPDFEncryptionParams().setAllowFillInForms(false);
- } else if (args[i].equals("-noaccesscontent")) {
- getPDFEncryptionParams().setAllowAccessContent(false);
- } else if (args[i].equals("-noassembledoc")) {
- getPDFEncryptionParams().setAllowAssembleDocument(false);
- } else if (args[i].equals("-noprinthq")) {
- getPDFEncryptionParams().setAllowPrintHq(false);
- } else if (args[i].equals("-version")) {
- printVersion();
- return false;
- } else if (!isOption(args[i])) {
- i = i + parseUnknownOption(args, i);
- } else {
- printUsage(System.err);
- System.exit(1);
- }
- }
- return true;
- } // end parseOptions
-
- private int parseCacheOption(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("if you use '-cache', you must specify "
- + "the name of the font cache file");
- } else {
- factory.getFontManager().setCacheFile(new File(args[i + 1]));
- return 1;
- }
- }
-
- private int parseConfigurationOption(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("if you use '-c', you must specify "
- + "the name of the configuration file");
- } else {
- userConfigFile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseLanguageOption(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("if you use '-l', you must specify a language");
- } else {
- Locale.setDefault(new Locale(args[i + 1], ""));
- return 1;
- }
- }
-
- private int parseResolution(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException(
- "if you use '-dpi', you must specify a resolution (dots per inch)");
- } else {
- this.targetResolution = Integer.parseInt(args[i + 1]);
- return 1;
- }
- }
-
- private int parseFOInputOption(String[] args, int i) throws FOPException {
- setInputFormat(FO_INPUT);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the fo file for the '-fo' option");
- } else {
- String filename = args[i + 1];
- if (isSystemInOutFile(filename)) {
- this.useStdIn = true;
- } else {
- fofile = new File(filename);
- }
- return 1;
- }
- }
-
- private int parseXSLInputOption(String[] args, int i) throws FOPException {
- setInputFormat(XSLT_INPUT);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the stylesheet "
- + "file for the '-xsl' option");
- } else {
- xsltfile = new File(args[i + 1]);
- return 1;
- }
- }
-
- private int parseXMLInputOption(String[] args, int i) throws FOPException {
- setInputFormat(XSLT_INPUT);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the input file "
- + "for the '-xml' option");
- } else {
- String filename = args[i + 1];
- if (isSystemInOutFile(filename)) {
- this.useStdIn = true;
- } else {
- xmlfile = new File(filename);
- }
- return 1;
- }
- }
-
- private int parseAWTOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_FOP_AWT_PREVIEW);
- return 0;
- }
-
- private int parsePDFOutputOption(String[] args, int i, String pdfAMode) throws FOPException {
- setOutputMode(MimeConstants.MIME_PDF);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the PDF output file");
- } else {
- setOutputFile(args[i + 1]);
- if (pdfAMode != null) {
- if (renderingOptions.get("pdf-a-mode") != null) {
- throw new FOPException("PDF/A mode already set");
- }
- renderingOptions.put("pdf-a-mode", pdfAMode);
- }
- return 1;
- }
- }
-
- private void setOutputFile(String filename) {
- if (isSystemInOutFile(filename)) {
- this.useStdOut = true;
- } else {
- outfile = new File(filename);
- }
- }
-
- /**
- * Checks whether the given argument is the next option or the specification of
- * stdin/stdout.
- *
- * TODO this is very ad-hoc and should be better handled. Consider the adoption of
- * Apache Commons CLI.
- *
- * @param arg an argument
- * @return true if the argument is an option ("-something"), false otherwise
- */
- private boolean isOption(String arg) {
- return arg.length() > 1 && arg.startsWith("-");
- }
-
- private boolean isSystemInOutFile(String filename) {
- return "-".equals(filename);
- }
-
- private int parseMIFOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_MIF);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the MIF output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parseRTFOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_RTF);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the RTF output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parseTIFFOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_TIFF);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the TIFF output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parsePNGOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_PNG);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the PNG output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parsePrintOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_FOP_PRINT);
- if ((i + 1 <= args.length)
- && (args[i + 1].charAt(0) != '-')) {
- String arg = args[i + 1];
- String[] parts = arg.split(",");
- for (int j = 0; j < parts.length; j++) {
- String s = parts[j];
- if (s.matches("\\d+")) {
- renderingOptions.put(PrintRenderer.START_PAGE, new Integer(s));
- } else if (s.matches("\\d+-\\d+")) {
- String[] startend = s.split("-");
- renderingOptions.put(PrintRenderer.START_PAGE, new Integer(startend[0]));
- renderingOptions.put(PrintRenderer.END_PAGE, new Integer(startend[1]));
- } else {
- PagesMode mode = PagesMode.byName(s);
- renderingOptions.put(PrintRenderer.PAGES_MODE, mode);
- }
- }
- return 1;
- } else {
- return 0;
- }
- }
-
- private int parseCopiesOption(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the number of copies");
- } else {
- renderingOptions.put(PrintRenderer.COPIES, new Integer(args[i + 1]));
- return 1;
- }
- }
-
- private int parsePCLOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_PCL);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the PDF output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parsePostscriptOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_POSTSCRIPT);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the PostScript output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parseTextOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_PLAIN_TEXT);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the text output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parseSVGOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_SVG);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the SVG output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parseAFPOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_AFP);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the AFP output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parseFOOutputOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_XSL_FO);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the FO output file");
- } else {
- setOutputFile(args[i + 1]);
- return 1;
- }
- }
-
- private int parseCustomOutputOption(String[] args, int i) throws FOPException {
- String mime = null;
- if ((i + 1 < args.length)
- || (args[i + 1].charAt(0) != '-')) {
- mime = args[i + 1];
- if ("list".equals(mime)) {
- String[] mimes = factory.getRendererFactory().listSupportedMimeTypes();
- System.out.println("Supported MIME types:");
- for (int j = 0; j < mimes.length; j++) {
- System.out.println(" " + mimes[j]);
- }
- System.exit(0);
- }
- }
- if ((i + 2 >= args.length)
- || (isOption(args[i + 1]))
- || (isOption(args[i + 2]))) {
- throw new FOPException("you must specify the output format and the output file");
- } else {
- setOutputMode(mime);
- setOutputFile(args[i + 2]);
- return 2;
- }
- }
-
- private int parseUnknownOption(String[] args, int i) throws FOPException {
- if (inputmode == NOT_SET) {
- inputmode = FO_INPUT;
- String filename = args[i];
- if (isSystemInOutFile(filename)) {
- this.useStdIn = true;
- } else {
- fofile = new File(filename);
- }
- } else if (outputmode == null) {
- outputmode = MimeConstants.MIME_PDF;
- setOutputFile(args[i]);
- } else {
- throw new FOPException("Don't know what to do with "
- + args[i]);
- }
- return 0;
- }
-
- private int parseAreaTreeOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_FOP_AREA_TREE);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the area-tree output file");
- } else if ((i + 2 == args.length)
- || (isOption(args[i + 2]))) {
- // only output file is specified
- setOutputFile(args[i + 1]);
- return 1;
- } else {
- // mimic format and output file have been specified
- mimicRenderer = args[i + 1];
- setOutputFile(args[i + 2]);
- return 2;
- }
- }
-
- private int parseIntermediateFormatOption(String[] args, int i) throws FOPException {
- setOutputMode(MimeConstants.MIME_FOP_IF);
- if ((i + 1 == args.length)
- || (args[i + 1].charAt(0) == '-')) {
- throw new FOPException("you must specify the intermediate format output file");
- } else if ((i + 2 == args.length)
- || (args[i + 2].charAt(0) == '-')) {
- // only output file is specified
- setOutputFile(args[i + 1]);
- return 1;
- } else {
- // mimic format and output file have been specified
- mimicRenderer = args[i + 1];
- setOutputFile(args[i + 2]);
- return 2;
- }
- }
-
- private int parseAreaTreeInputOption(String[] args, int i) throws FOPException {
- setInputFormat(AREATREE_INPUT);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the Area Tree file for the '-atin' option");
- } else {
- String filename = args[i + 1];
- if (isSystemInOutFile(filename)) {
- this.useStdIn = true;
- } else {
- areatreefile = new File(filename);
- }
- return 1;
- }
- }
-
- private int parseIFInputOption(String[] args, int i) throws FOPException {
- setInputFormat(IF_INPUT);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the intermediate file for the '-ifin' option");
- } else {
- String filename = args[i + 1];
- if (isSystemInOutFile(filename)) {
- this.useStdIn = true;
- } else {
- iffile = new File(filename);
- }
- return 1;
- }
- }
-
- private int parseImageInputOption(String[] args, int i) throws FOPException {
- setInputFormat(IMAGE_INPUT);
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("you must specify the image file for the '-imagein' option");
- } else {
- String filename = args[i + 1];
- if (isSystemInOutFile(filename)) {
- this.useStdIn = true;
- } else {
- imagefile = new File(filename);
- }
- return 1;
- }
- }
-
- private PDFEncryptionParams getPDFEncryptionParams() throws FOPException {
- PDFEncryptionParams params = (PDFEncryptionParams)renderingOptions.get(
- PDFConfigurationConstants.ENCRYPTION_PARAMS);
- if (params == null) {
- if (!PDFEncryptionManager.checkAvailableAlgorithms()) {
- throw new FOPException("PDF encryption requested but it is not available."
- + " Please make sure MD5 and RC4 algorithms are available.");
- }
- params = new PDFEncryptionParams();
- renderingOptions.put(PDFConfigurationConstants.ENCRYPTION_PARAMS, params);
- }
- return params;
- }
-
- private int parsePDFOwnerPassword(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- getPDFEncryptionParams().setOwnerPassword("");
- return 0;
- } else {
- getPDFEncryptionParams().setOwnerPassword(args[i + 1]);
- return 1;
- }
- }
-
- private int parsePDFUserPassword(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- getPDFEncryptionParams().setUserPassword("");
- return 0;
- } else {
- getPDFEncryptionParams().setUserPassword(args[i + 1]);
- return 1;
- }
- }
-
- private int parsePDFProfile(String[] args, int i) throws FOPException {
- if ((i + 1 == args.length)
- || (isOption(args[i + 1]))) {
- throw new FOPException("You must specify a PDF profile");
- } else {
- String profile = args[i + 1];
- PDFAMode pdfAMode = PDFAMode.valueOf(profile);
- if (pdfAMode != null && pdfAMode != PDFAMode.DISABLED) {
- if (renderingOptions.get("pdf-a-mode") != null) {
- throw new FOPException("PDF/A mode already set");
- }
- renderingOptions.put("pdf-a-mode", pdfAMode.getName());
- return 1;
- } else {
- PDFXMode pdfXMode = PDFXMode.valueOf(profile);
- if (pdfXMode != null && pdfXMode != PDFXMode.DISABLED) {
- if (renderingOptions.get("pdf-x-mode") != null) {
- throw new FOPException("PDF/X mode already set");
- }
- renderingOptions.put("pdf-x-mode", pdfXMode.getName());
- return 1;
- }
- }
- throw new FOPException("Unsupported PDF profile: " + profile);
- }
- }
-
- private void setOutputMode(String mime) throws FOPException {
- if (outputmode == null) {
- outputmode = mime;
- } else {
- throw new FOPException("you can only set one output method");
- }
- }
-
- private void setLogOption (String option, String level) {
- if (log instanceof CommandLineLogger
- || System.getProperty("org.apache.commons.logging.Log") == null) {
- setLogLevel(level);
- } else if (log != null) {
- log.warn("The option " + option + " can only be used");
- log.warn("with FOP's command line logger,");
- log.warn("which is the default on the command line.");
- log.warn("Configure other loggers using Java system properties.");
- }
- }
-
- private void setLogLevel(String level) {
- // Set the level for future loggers.
- LogFactory.getFactory().setAttribute("level", level);
- if (log instanceof CommandLineLogger) {
- // Set the level for the logger created already.
- ((CommandLineLogger) log).setLogLevel(level);
- }
- }
-
- private void setInputFormat(int format) throws FOPException {
- if (inputmode == NOT_SET || inputmode == format) {
- inputmode = format;
- } else {
- throw new FOPException("Only one input mode can be specified!");
- }
- }
-
- /**
- * checks whether all necessary information has been given in a consistent way
- */
- private void checkSettings() throws FOPException, FileNotFoundException {
- if (inputmode == NOT_SET) {
- throw new FOPException("No input file specified");
- }
-
- if (outputmode == null) {
- throw new FOPException("No output file specified");
- }
-
- if ((outputmode.equals(MimeConstants.MIME_FOP_AWT_PREVIEW)
- || outputmode.equals(MimeConstants.MIME_FOP_PRINT))
- && outfile != null) {
- throw new FOPException("Output file may not be specified "
- + "for AWT or PRINT output");
- }
-
- if (inputmode == XSLT_INPUT) {
- // check whether xml *and* xslt file have been set
- if (xmlfile == null && !this.useStdIn) {
- throw new FOPException("XML file must be specified for the transform mode");
- }
- if (xsltfile == null) {
- throw new FOPException("XSLT file must be specified for the transform mode");
- }
-
- // warning if fofile has been set in xslt mode
- if (fofile != null) {
- log.warn("Can't use fo file with transform mode! Ignoring.\n"
- + "Your input is " + "\n xmlfile: "
- + xmlfile.getAbsolutePath()
- + "\nxsltfile: "
- + xsltfile.getAbsolutePath()
- + "\n fofile: "
- + fofile.getAbsolutePath());
- }
- if (xmlfile != null && !xmlfile.exists()) {
- throw new FileNotFoundException("Error: xml file "
- + xmlfile.getAbsolutePath()
- + " not found ");
- }
- if (!xsltfile.exists()) {
- throw new FileNotFoundException("Error: xsl file "
- + xsltfile.getAbsolutePath()
- + " not found ");
- }
-
- } else if (inputmode == FO_INPUT) {
- if (outputmode.equals(MimeConstants.MIME_XSL_FO)) {
- throw new FOPException(
- "FO output mode is only available if you use -xml and -xsl");
- }
- if (fofile != null && !fofile.exists()) {
- throw new FileNotFoundException("Error: fo file "
- + fofile.getAbsolutePath()
- + " not found ");
- }
- } else if (inputmode == AREATREE_INPUT) {
- if (outputmode.equals(MimeConstants.MIME_XSL_FO)) {
- throw new FOPException(
- "FO output mode is only available if you use -xml and -xsl");
- } else if (outputmode.equals(MimeConstants.MIME_FOP_AREA_TREE)) {
- throw new FOPException(
- "Area Tree Output is not available if Area Tree is used as input!");
- }
- if (areatreefile != null && !areatreefile.exists()) {
- throw new FileNotFoundException("Error: area tree file "
- + areatreefile.getAbsolutePath()
- + " not found ");
- }
- } else if (inputmode == IF_INPUT) {
- if (outputmode.equals(MimeConstants.MIME_XSL_FO)) {
- throw new FOPException(
- "FO output mode is only available if you use -xml and -xsl");
- } else if (outputmode.equals(MimeConstants.MIME_FOP_AREA_TREE)) {
- throw new FOPException(
- "Area Tree Output is not available if Intermediate Format"
- + " is used as input!");
- } else if (outputmode.equals(MimeConstants.MIME_FOP_IF)) {
- throw new FOPException(
- "Intermediate Output is not available if Intermediate Format"
- + " is used as input!");
- }
- if (iffile != null && !iffile.exists()) {
- throw new FileNotFoundException("Error: intermediate format file "
- + iffile.getAbsolutePath()
- + " not found ");
- }
- } else if (inputmode == IMAGE_INPUT) {
- if (outputmode.equals(MimeConstants.MIME_XSL_FO)) {
- throw new FOPException(
- "FO output mode is only available if you use -xml and -xsl");
- }
- if (imagefile != null && !imagefile.exists()) {
- throw new FileNotFoundException("Error: image file "
- + imagefile.getAbsolutePath()
- + " not found ");
- }
- }
- } // end checkSettings
-
- /**
- * Sets the user configuration.
- * @throws FOPException if creating the user configuration fails
- * @throws IOException
- */
- private void setUserConfig() throws FOPException, IOException {
- if (userConfigFile == null) {
- return;
- }
- try {
- factory.setUserConfig(userConfigFile);
- } catch (SAXException e) {
- throw new FOPException(e);
- }
- }
-
- /**
- * @return the chosen output format (MIME type)
- * @throws FOPException for invalid output formats
- */
- protected String getOutputFormat() throws FOPException {
- if (outputmode == null) {
- throw new FOPException("Renderer has not been set!");
- }
- if (outputmode.equals(MimeConstants.MIME_FOP_AREA_TREE)) {
- renderingOptions.put("fineDetail", isCoarseAreaXml());
- }
- return outputmode;
- }
-
- /**
- * Create an InputHandler object based on command-line parameters
- * @return a new InputHandler instance
- * @throws IllegalArgumentException if invalid/missing parameters
- */
- private InputHandler createInputHandler() {
- switch (inputmode) {
- case FO_INPUT:
- return new InputHandler(fofile);
- case AREATREE_INPUT:
- return new AreaTreeInputHandler(areatreefile);
- case IF_INPUT:
- return new IFInputHandler(iffile);
- case XSLT_INPUT:
- InputHandler handler = new InputHandler(xmlfile, xsltfile, xsltParams);
- if (useCatalogResolver) {
- handler.createCatalogResolver(foUserAgent);
- }
- return handler;
- case IMAGE_INPUT:
- return new ImageInputHandler(imagefile, xsltfile, xsltParams);
- default:
- throw new IllegalArgumentException("Error creating InputHandler object.");
- }
- }
-
- /**
- * Get the FOUserAgent for this Command-Line run
- * @return FOUserAgent instance
- */
- protected FOUserAgent getFOUserAgent() {
- return foUserAgent;
- }
-
- /**
- * Returns the XSL-FO file if set.
- * @return the XSL-FO file, null if not set
- */
- public File getFOFile() {
- return fofile;
- }
-
- /**
- * Returns the input XML file if set.
- * @return the input XML file, null if not set
- */
- public File getXMLFile() {
- return xmlfile;
- }
-
- /**
- * Returns the stylesheet to be used for transformation to XSL-FO.
- * @return stylesheet
- */
- public File getXSLFile() {
- return xsltfile;
- }
-
- /**
- * Returns the output file
- * @return the output file
- */
- public File getOutputFile() {
- return outfile;
- }
-
- /**
- * Returns the user configuration file to be used.
- * @return the userconfig.xml file
- */
- public File getUserConfigFile() {
- return userConfigFile;
- }
-
- /**
- * Indicates whether the XML renderer should generate coarse area XML
- * @return true if coarse area XML is desired
- */
- public Boolean isCoarseAreaXml() {
- return suppressLowLevelAreas;
- }
-
- /**
- * Indicates whether input comes from standard input (stdin).
- * @return true if input comes from standard input (stdin)
- */
- public boolean isInputFromStdIn() {
- return this.useStdIn;
- }
-
- /**
- * Indicates whether output is sent to standard output (stdout).
- * @return true if output is sent to standard output (stdout)
- */
- public boolean isOutputToStdOut() {
- return this.useStdOut;
- }
-
- /**
- * Returns the input file.
- * @return either the fofile or the xmlfile
- */
- public File getInputFile() {
- switch (inputmode) {
- case FO_INPUT:
- return fofile;
- case XSLT_INPUT:
- return xmlfile;
- default:
- return fofile;
- }
- }
-
- private static void printVersion() {
- System.out.println("FOP Version " + Version.getVersion());
- }
-
- /**
- * Shows the command line syntax including a summary of all available options and some
- * examples.
- *
- * @param out the stream to which the message must be printed
- */
- public static void printUsage(PrintStream out) {
- out.println(
- "\nUSAGE\nfop [options] [-fo|-xml] infile [-xsl file] "
- + "[-awt|-pdf|-mif|-rtf|-tiff|-png|-pcl|-ps|-txt|-at [mime]|-print] <outfile>\n"
- + " [OPTIONS] \n"
- + " -version print FOP version and exit\n"
- + " -d debug mode \n"
- + " -x dump configuration settings \n"
- + " -q quiet mode \n"
- + " -c cfg.xml use additional configuration file cfg.xml\n"
- + " -l lang the language to use for user information \n"
- + " -r relaxed/less strict validation (where available)\n"
- + " -dpi xxx target resolution in dots per inch (dpi) where xxx is a number\n"
- + " -s for area tree XML, down to block areas only\n"
- + " -v run in verbose mode (currently simply print FOP version"
- + " and continue)\n\n"
- + " -o [password] PDF file will be encrypted with option owner password\n"
- + " -u [password] PDF file will be encrypted with option user password\n"
- + " -noprint PDF file will be encrypted without printing permission\n"
- + " -nocopy PDF file will be encrypted without copy content permission\n"
- + " -noedit PDF file will be encrypted without edit content permission\n"
- + " -noannotations PDF file will be encrypted without edit annotation permission\n"
- + " -nofillinforms PDF file will be encrypted without"
- + " fill in interactive form fields permission\n"
- + " -noaccesscontent PDF file will be encrypted without"
- + " extract text and graphics permission\n"
- + " -noassembledoc PDF file will be encrypted without"
- + " assemble the document permission\n"
- + " -noprinthq PDF file will be encrypted without"
- + " print high quality permission\n"
- + " -a enables accessibility features (Tagged PDF etc., default off)\n"
- + " -pdfprofile prof PDF file will be generated with the specified profile\n"
- + " (Examples for prof: PDF/A-1b or PDF/X-3:2003)\n\n"
- + " -conserve enable memory-conservation policy (trades memory-consumption"
- + " for disk I/O)\n"
- + " (Note: currently only influences whether the area tree is"
- + " serialized.)\n\n"
-
- + " -cache specifies a file/directory path location"
- + " for the font cache file\n"
- + " -flush flushes the current font cache file\n\n"
-
- + " [INPUT] \n"
- + " infile xsl:fo input file (the same as the next) \n"
- + " (use '-' for infile to pipe input from stdin)\n"
- + " -fo infile xsl:fo input file \n"
- + " -xml infile xml input file, must be used together with -xsl \n"
- + " -atin infile area tree input file \n"
- + " -ifin infile intermediate format input file \n"
- + " -imagein infile image input file (piping through stdin not supported)\n"
- + " -xsl stylesheet xslt stylesheet \n \n"
- + " -param name value <value> to use for parameter <name> in xslt stylesheet\n"
- + " (repeat '-param name value' for each parameter)\n \n"
- + " -catalog use catalog resolver for input XML and XSLT files\n"
- + " [OUTPUT] \n"
- + " outfile input will be rendered as PDF into outfile\n"
- + " (use '-' for outfile to pipe output to stdout)\n"
- + " -pdf outfile input will be rendered as PDF (outfile req'd)\n"
- + " -pdfa1b outfile input will be rendered as PDF/A-1b compliant PDF\n"
- + " (outfile req'd, same as \"-pdf outfile -pdfprofile PDF/A-1b\")\n"
- + " -awt input will be displayed on screen \n"
- + " -rtf outfile input will be rendered as RTF (outfile req'd)\n"
- + " -pcl outfile input will be rendered as PCL (outfile req'd) \n"
- + " -ps outfile input will be rendered as PostScript (outfile req'd) \n"
- + " -afp outfile input will be rendered as AFP (outfile req'd)\n"
- + " -tiff outfile input will be rendered as TIFF (outfile req'd)\n"
- + " -png outfile input will be rendered as PNG (outfile req'd)\n"
- + " -txt outfile input will be rendered as plain text (outfile req'd) \n"
- + " -at [mime] out representation of area tree as XML (outfile req'd) \n"
- + " specify optional mime output to allow the AT to be converted\n"
- + " to final format later\n"
- + " -if [mime] out representation of document in intermediate format XML"
- + " (outfile req'd)\n"
- + " specify optional mime output to allow the IF to be converted\n"
- + " to final format later\n"
- + " -print input file will be rendered and sent to the printer \n"
- + " see options with \"-print help\" \n"
- + " -out mime outfile input will be rendered using the given MIME type\n"
- + " (outfile req'd) Example: \"-out application/pdf D:\\out.pdf\"\n"
- + " (Tip: \"-out list\" prints the list of supported MIME types"
- + " and exits)\n"
- //+ " -mif outfile input will be rendered as MIF (FrameMaker) (outfile req'd)\n"
- //+ " Experimental feature - requires additional fop-sandbox.jar.\n"
- + " -svg outfile input will be rendered as an SVG slides file (outfile req'd) \n"
- + " Experimental feature - requires additional fop-sandbox.jar.\n"
- + "\n"
- + " -foout outfile input will only be XSL transformed. The intermediate \n"
- + " XSL-FO file is saved and no rendering is performed. \n"
- + " (Only available if you use -xml and -xsl parameters)\n\n"
- + "\n"
- + " [Examples]\n" + " fop foo.fo foo.pdf \n"
- + " fop -fo foo.fo -pdf foo.pdf (does the same as the previous line)\n"
- + " fop -xml foo.xml -xsl foo.xsl -pdf foo.pdf\n"
- + " fop -xml foo.xml -xsl foo.xsl -foout foo.fo\n"
- + " fop -xml - -xsl foo.xsl -pdf -\n"
- + " fop foo.fo -mif foo.mif\n"
- + " fop foo.fo -rtf foo.rtf\n"
- + " fop foo.fo -print\n"
- + " fop foo.fo -awt\n");
- }
-
- /**
- * shows the options for print output
- */
- private void printUsagePrintOutput() {
- System.err.println("USAGE: -print [from[-to][,even|odd]] [-copies numCopies]\n\n"
- + "Example:\n"
- + "all pages: fop infile.fo -print\n"
- + "all pages with two copies: fop infile.fo -print -copies 2\n"
- + "all pages starting with page 7: fop infile.fo -print 7\n"
- + "pages 2 to 3: fop infile.fo -print 2-3\n"
- + "only even page between 10 and 20: fop infile.fo -print 10-20,even\n");
- }
-
- /**
- * Outputs all commandline settings
- */
- private void dumpConfiguration() {
- log.info("Input mode: ");
- switch (inputmode) {
- case NOT_SET:
- log.info("not set");
- break;
- case FO_INPUT:
- log.info("FO ");
- if (isInputFromStdIn()) {
- log.info("fo input file: from stdin");
- } else {
- log.info("fo input file: " + fofile.toString());
- }
- break;
- case XSLT_INPUT:
- log.info("xslt transformation");
- if (isInputFromStdIn()) {
- log.info("xml input file: from stdin");
- } else {
- log.info("xml input file: " + xmlfile.toString());
- }
- log.info("xslt stylesheet: " + xsltfile.toString());
- break;
- case AREATREE_INPUT:
- log.info("AT ");
- if (isInputFromStdIn()) {
- log.info("area tree input file: from stdin");
- } else {
- log.info("area tree input file: " + areatreefile.toString());
- }
- break;
- case IF_INPUT:
- log.info("IF ");
- if (isInputFromStdIn()) {
- log.info("intermediate input file: from stdin");
- } else {
- log.info("intermediate input file: " + iffile.toString());
- }
- break;
- case IMAGE_INPUT:
- log.info("Image ");
- if (isInputFromStdIn()) {
- log.info("image input file: from stdin");
- } else {
- log.info("image input file: " + imagefile.toString());
- }
- break;
- default:
- log.info("unknown input type");
- }
- log.info("Output mode: ");
- if (outputmode == null) {
- log.info("not set");
- } else if (MimeConstants.MIME_FOP_AWT_PREVIEW.equals(outputmode)) {
- log.info("awt on screen");
- if (outfile != null) {
- log.error("awt mode, but outfile is set:");
- log.error("out file: " + outfile.toString());
- }
- } else if (MimeConstants.MIME_FOP_PRINT.equals(outputmode)) {
- log.info("print directly");
- if (outfile != null) {
- log.error("print mode, but outfile is set:");
- log.error("out file: " + outfile.toString());
- }
- } else if (MimeConstants.MIME_FOP_AREA_TREE.equals(outputmode)) {
- log.info("area tree");
- if (mimicRenderer != null) {
- log.info("mimic renderer: " + mimicRenderer);
- }
- if (isOutputToStdOut()) {
- log.info("output file: to stdout");
- } else {
- log.info("output file: " + outfile.toString());
- }
- } else if (MimeConstants.MIME_FOP_IF.equals(outputmode)) {
- log.info("intermediate format");
- log.info("output file: " + outfile.toString());
- } else {
- log.info(outputmode);
- if (isOutputToStdOut()) {
- log.info("output file: to stdout");
- } else {
- log.info("output file: " + outfile.toString());
- }
- }
-
- log.info("OPTIONS");
-
- if (userConfigFile != null) {
- log.info("user configuration file: "
- + userConfigFile.toString());
- } else {
- log.info("no user configuration file is used [default]");
- }
- }
-
- private void flushCache() throws FOPException {
- FontManager fontManager = factory.getFontManager();
- File cacheFile = fontManager.getCacheFile();
- if (!fontManager.deleteCache()) {
- System.err.println("Failed to flush the font cache file '"
- + cacheFile + "'.");
- System.exit(1);
- }
- }
- }
|