blob: d0a954586bfc1e7cb700c41e2f827c07b3153c91 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
<?xml version="1.0" standalone="no"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
<document>
<header>
<title>FOP Extensions</title>
<subtitle>Adding extensions to FOP</subtitle>
<authors>
<person name="Keiron Liddle" email="keiron@aftexsw.com"/>
</authors>
</header>
<body>
<section>
<title>Extensions</title>
<p>
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>
<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. There needs to be a handler for
the output information which creates a document level result.
</p>
<p>
FO Area - This is where an extension creates an normal 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>
<p>
- 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.
</p>
<p>
- Separate page number display for a subsection. ie. - master document
is page 4 of 7, but subsection is page 2 of 3.
</p>
</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>
eg.
<source><![CDATA[<my:script-link script="app.execMenuItem('AcroSrch:Query');">
Search
</my:script-link>]]></source>
to result in a text box referencing the following PDF action:
<source><![CDATA[<< /S /JavaScript /JS (app.execMenuItem("AcroSrch:Query");) >>]]></source>
</p>
</section>
</section>
</body>
</document>
|