123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
- <!--
- 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$ -->
- <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.3//EN" "http://forrest.apache.org/dtd/document-v13.dtd">
-
- <document>
- <header>
- <title>Apache™ FOP Design: Extensions</title>
- <version>$Revision$</version>
- <authors>
- <person name="Keiron Liddle" email="keiron@aftexsw.com"/>
- </authors>
- </header>
-
- <body>
- <section id="intro">
- <title>Introduction</title>
- <p>
- Apache™ FOP provides an extension mechanism to add extra functionality. There
- are a number of different types of extensions that apply to different
- steps when converting FO into the rendered output.
- </p>
- </section>
- <section>
- <title>Extensions</title>
- <p>
- SVG Graphic - This applies to svg and any other xml document that
- can be converted into svg in the output. All that is required is
- the element mapping for the xml and a converter that changes the
- document into svg. This conversion is done in the FO Tree. The
- conversion is done by the top level element of the namespace
- or in the case of an external image a Converter.
- </p>
- <p>
- XML Document - Instead of converting the document into svg it
- can be passed directly to the renderer. The renderer will need
- to have a handler for the xml document. This handler can add
- information directly to the output document.
- </p>
- <p>
- Output Document - This is used to add document level information
- to the output result. Such an extension will set information that
- is passed to the output document. The area tree handles these
- extensions and passs along the information to the renderer.
- The extension may contain resolveable objects. The extension
- can be passed to the renderer once resolve either immediately,
- after the next page or at the end of the document. This is so that
- the extension can be handled according to other associated data.
- </p>
- <p>
- FO Area - This is where an extension creates an normal or extended
- area in the Area Tree. This is useful when the normal FO objects
- cannot create the area in the way that is needed.
- </p>
- <p>
- Resolveable - In some cases it may require information to be
- resolved for information such as page numbers. This can apply
- to the XML Document, FO Area or output document extensions.
- </p>
- <ul>
- <li>Add a string ['(Continued)'] to a table header if the table spans
- multiple pages. These tables are part of the content and can start
- anywhere in the page.</li>
- <li>Separate page number display for a subsection. ie. - master document
- is page 4 of 7, but subsection is page 2 of 3.</li>
- </ul>
- </section>
- <section>
- <title>Examples</title>
- <p>
- Plan - The plan extension is a simple SVG graphic extension.
- Given a plan document either inside an InstreamForeignObject
- or as an external graphic, it converts the plan document into
- an svg graphic. The svg graphic is then passed through the
- Area Tree to the Renderer. The Renderer then renders the svg
- graphic as normal.
- </p>
- <p>
- PDF Outline - This is output document extension. If rendering to
- pdf and this extensionis used then the bookmark information is
- passed to the pdf document. This information is then set on the
- document.
- </p>
- <p>
- PDF Additions - This can be done with an XML Document extension.
- A simple xml document is defined that provides the appropriate
- information. When the document is rendered a handler converts the
- document into PDF markup.
- </p>
- <p>
- For example:</p>
- <source><![CDATA[<my:script-link script="app.execMenuItem('AcroSrch:Query');">
- Search
- </my:script-link>]]></source>
- <p>
- to result in a text box referencing the following PDF action:</p>
- <source><![CDATA[<<
- /S /JavaScript
- /JS (app.execMenuItem("AcroSrch:Query");)
- >>]]></source>
-
- </section>
- <section id="status">
- <title>Status</title>
- <section id="status-todo">
- <title>To Do</title>
- </section>
- <section id="status-wip">
- <title>Work In Progress</title>
- <ul>
- <li>mathml extension</li>
- <li>another xml -> svg extension</li>
- <li>svg text normal text if that can be handled otherwise stroked this is done automatically</li>
- </ul>
- </section>
- <section id="status-complete">
- <title>Completed</title>
- <ul>
- <li>svg now in an xml handler, FOP can be used without batik</li>
- <li>bookmark extension improved a bit - changed bookmark extension, now requires a wrapping element bookmark</li>
- </ul>
- </section>
- </section>
- </body>
- </document>
|