/* * 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 org.apache.fop.apps; // Java import java.util.Map; import java.io.IOException; import java.io.InputStream; // Avalon import org.apache.avalon.framework.logger.LogEnabled; import org.apache.avalon.framework.logger.Logger; // FOP import org.apache.fop.pdf.PDFEncryptionParams; /** * The User Agent for fo. * This user agent is used by the processing to obtain user configurable * options. *

* Renderer specific extensions (that do not produce normal areas on * the output) will be done like so: *
* The extension will create an area, custom if necessary *
* this area will be added to the user agent with a key *
* the renderer will know keys for particular extensions *
* eg. bookmarks will be held in a special hierarchical area representing * the title and bookmark structure *
* These areas may contain resolveable areas that will be processed * with other resolveable areas */ public class FOUserAgent implements LogEnabled { private Logger log; /** Map containing various default values */ public Map defaults = new java.util.HashMap(); /** Map containing XML handlers for various document types */ public Map handlers = new java.util.HashMap(); private String baseURL; private PDFEncryptionParams pdfEncryptionParams; private float px2mm = 0.35277777777777777778f; //72dpi (=25.4/dpi) /** * Sets the logger. * @param log Logger to use * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(Logger) */ public void enableLogging(Logger log) { this.log = log; } /** * Returns the logger to use. * @see org.apache.avalon.framework.logger.AbstractLogEnabled#getLogger() * (todo) This breaks IoC/SoC. Should be improved. */ public Logger getLogger() { return this.log; } /** * Sets the base URL. * @param baseURL base URL */ public void setBaseURL(String baseURL) { this.baseURL = baseURL; } /** * Returns the base URL. * @return the base URL */ public String getBaseURL() { if ((this.baseURL == null) || (this.baseURL.trim().equals(""))) { return "file:."; } else { return this.baseURL; } } /** * Returns the parameters for PDF encryption. * @return the PDF encryption parameters, null if not applicable */ public PDFEncryptionParams getPDFEncryptionParams() { return pdfEncryptionParams; } /** * Sets the parameters for PDF encryption. * @param pdfEncryptionParams the PDF encryption parameters, null to * disable PDF encryption */ public void setPDFEncryptionParams(PDFEncryptionParams pdfEncryptionParams) { this.pdfEncryptionParams = pdfEncryptionParams; } /** * Get an input stream for a reference. * Temporary solution until API better. * @param uri URI to access * @return InputStream for accessing the resource. * @throws IOException in case of an I/O problem */ public InputStream getStream(String uri) throws IOException { return null; } /** * Returns the conversion factor from pixel units to millimeters. This * depends on the desired reolution. * @return float conversion factor */ public float getPixelUnitToMillimeter() { return this.px2mm; } /** * Sets the resolution in dpi. * @param dpi resolution in dpi */ public void setResolution(int dpi) { this.px2mm = (float)(25.4 / dpi); } /** * If to create hot links to footnotes and before floats. * @return True if hot links dhould be created */ public boolean linkToFootnotes() { return true; } }