git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_URI_Unification@1356212 13f79535-47bb-0310-9956-ffa450edef68pull/26/head
@@ -369,7 +369,7 @@ This font contains no embedding license restrictions | |||
</fo:block> | |||
</fo:wrapper> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="50mm"/> | |||
<fo:table-column column-width="50mm"/> | |||
<fo:table-column column-width="50mm"/> |
@@ -32,7 +32,7 @@ | |||
<fo:block-container absolute-position="absolute" width="100%" height="100%" border-top-color="silver" border-top-style="dotted" border-top-width="0.13mm"> | |||
<fo:block/> | |||
</fo:block-container> | |||
<fo:table space-before.optimum="1in div 12" margin-left="2in div 12" margin-top="1in div 10" font-family="sans-serif" font-size="7pt" color="green"> | |||
<fo:table space-before.optimum="1in div 12" margin-left="2in div 12" margin-top="1in div 10" font-family="sans-serif" font-size="7pt" color="green" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="8in div 10 - 2in div 12"/> | |||
<fo:table-column border-right-style="solid" border-right-width="0.5mm" column-width="36in div 10"/> | |||
<fo:table-column column-width="5in div 10"/> | |||
@@ -107,7 +107,7 @@ | |||
<fo:block>Från konto nr</fo:block> | |||
</fo:table-cell> | |||
<fo:table-cell border-bottom-style="solid" border-bottom-width="0.13mm" padding-top="6mm" display-align="after"> | |||
<fo:table height="3mm"> | |||
<fo:table height="3mm" table-layout="fixed" width="100%"> | |||
<fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> | |||
<fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> | |||
<fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> | |||
@@ -182,7 +182,7 @@ | |||
<fo:block color="black">16.6.2006</fo:block> | |||
</fo:table-cell> | |||
<fo:table-cell border-bottom-style="solid" border-bottom-width="0.5mm" padding-left="2mm" padding-top="4mm" font-size="10pt"> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="0.5cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-body> | |||
@@ -201,7 +201,7 @@ | |||
<fo:table-row height="13in div 12 - 5mm"> | |||
<fo:table-cell number-columns-spanned="4" padding-left="40mm" display-align="after"> | |||
<fo:block> | |||
<fo:table height="5in div 12" margin-left="2.5mm" margin-right="2.5mm"><!--105--> | |||
<fo:table height="5in div 12" margin-left="2.5mm" margin-right="2.5mm" table-layout="fixed" width="100%"><!--105--> | |||
<fo:table-column column-width="0.5mm"/> | |||
<fo:table-column column-width="0.25mm"/> | |||
<fo:table-column column-width="0.25mm"/> | |||
@@ -950,7 +950,7 @@ | |||
</fo:page-sequence> | |||
<fo:page-sequence master-reference="A4"> | |||
<fo:static-content flow-name="xsl-region-after"> | |||
<fo:table space-before.optimum="1in div 12" margin-left="2in div 12" margin-top="1in div 10" font-family="sans-serif" font-size="7pt" color="green"> | |||
<fo:table space-before.optimum="1in div 12" margin-left="2in div 12" margin-top="1in div 10" font-family="sans-serif" font-size="7pt" color="green" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="8in div 10 - 2in div 12"/> | |||
<fo:table-column border-right-style="solid" border-right-width="0.5mm" column-width="36in div 10"/> | |||
<fo:table-column column-width="5in div 10"/> | |||
@@ -1025,7 +1025,7 @@ | |||
<fo:block>Från konto nr</fo:block> | |||
</fo:table-cell> | |||
<fo:table-cell border-bottom-style="solid" border-bottom-width="0.13mm" padding-top="6mm" display-align="after"> | |||
<fo:table height="3mm"> | |||
<fo:table height="3mm" table-layout="fixed" width="100%"> | |||
<fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> | |||
<fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> | |||
<fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> | |||
@@ -1100,7 +1100,7 @@ | |||
<fo:block color="black">16.6.2006</fo:block> | |||
</fo:table-cell> | |||
<fo:table-cell border-bottom-style="solid" border-bottom-width="0.5mm" padding-left="2mm" padding-top="4mm" font-size="10pt"> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="0.5cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-body> |
@@ -31,8 +31,6 @@ | |||
odd-or-even="even" /> | |||
<fo:conditional-page-master-reference master-reference="right" | |||
odd-or-even="odd" /> | |||
<!-- recommended fallback procedure --> | |||
<fo:conditional-page-master-reference master-reference="rest" /> | |||
</fo:repeatable-page-master-alternatives> | |||
</fo:page-sequence-master> | |||
</fo:layout-master-set> |
@@ -67,9 +67,9 @@ | |||
<fo:block space-before="12pt" space-after="6pt">The next table has width=100% on the table no column widths specified on the table-column element.</fo:block> | |||
<!-- table start --> | |||
<fo:table border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column background-color="yellow"/> | |||
<fo:table-column background-color="blue"/> | |||
<fo:table-column background-color="green"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="blue"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="green"/> | |||
<fo:table-body> | |||
<fo:table-row> | |||
<fo:table-cell display-align="before"><fo:block>Some text to make this cell | |||
@@ -83,7 +83,7 @@ | |||
<fo:block space-before="12pt" space-after="6pt">The next table has fixed column widths=13cm, ipd.optimum=12cm and ipd.max = 100%.</fo:block> | |||
<!-- table start --> | |||
<fo:table border-collapse="separate" | |||
table-layout="fixed" | |||
table-layout="fixed" width="100%" | |||
inline-progression-dimension="12cm" | |||
inline-progression-dimension.maximum="100%" | |||
> | |||
@@ -122,8 +122,8 @@ | |||
<!-- table start --> | |||
<fo:table border-collapse="separate" table-layout="fixed" width="70% + 1cm"> | |||
<fo:table-column column-width="from-parent('width') div 3" background-color="yellow"/> | |||
<fo:table-column background-color="blue"/> | |||
<fo:table-column background-color="green"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="blue"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="green"/> | |||
<fo:table-body> | |||
<fo:table-row> | |||
<fo:table-cell display-align="before"><fo:block>Some text to make this cell | |||
@@ -140,11 +140,11 @@ | |||
</fo:block> | |||
<!-- table start --> | |||
<fo:table border-collapse="separate" | |||
table-layout="fixed" | |||
table-layout="fixed" width="100%" | |||
inline-progression-dimension="15cm"> | |||
<fo:table-column background-color="yellow"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> | |||
<fo:table-column column-width="3cm" background-color="blue"/> | |||
<fo:table-column background-color="green"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="green"/> | |||
<fo:table-body> | |||
<fo:table-row> | |||
<fo:table-cell display-align="before"><fo:block>Some text to make this cell | |||
@@ -159,10 +159,10 @@ | |||
The next table specifies neither width nor inline-progression-dimension. | |||
</fo:block> | |||
<!-- table start --> | |||
<fo:table table-layout="fixed" border-collapse="separate"> | |||
<fo:table-column background-color="yellow"/> | |||
<fo:table table-layout="fixed" width="100%" border-collapse="separate"> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> | |||
<fo:table-column column-width="3cm" background-color="blue"/> | |||
<fo:table-column background-color="green"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="green"/> | |||
<fo:table-body> | |||
<fo:table-row> | |||
<fo:table-cell display-align="before"><fo:block>Some text to make this cell | |||
@@ -178,11 +178,11 @@ | |||
specifies a column width of 5cm on the middle column only. | |||
</fo:block> | |||
<!-- table start --> | |||
<fo:table table-layout="fixed" border-collapse="separate" | |||
<fo:table table-layout="fixed" width="100%" border-collapse="separate" | |||
inline-progression-dimension.minimum="10cm"> | |||
<fo:table-column background-color="yellow"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> | |||
<fo:table-column column-width="5cm" background-color="blue"/> | |||
<fo:table-column background-color="green"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="green"/> | |||
<fo:table-body> | |||
<fo:table-row> | |||
<fo:table-cell display-align="before"><fo:block>Some text to make this cell | |||
@@ -194,17 +194,17 @@ | |||
</fo:table> | |||
<fo:block space-before="12pt" space-after="6pt"> | |||
The next table specifies inline-progression-dimension.minimum="10cm", | |||
inline-progression-dimension.maximum="17cm and | |||
The next table specifies inline-progression-dimension.minimum="10cm", | |||
inline-progression-dimension.maximum="17cm and | |||
specifies a column width of 5cm on the middle column only. | |||
</fo:block> | |||
<!-- table start --> | |||
<fo:table table-layout="fixed" border-collapse="separate" | |||
<fo:table table-layout="fixed" width="100%" border-collapse="separate" | |||
inline-progression-dimension.minimum="10cm" | |||
inline-progression-dimension.maximum="17cm"> | |||
<fo:table-column background-color="yellow"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> | |||
<fo:table-column column-width="5cm" background-color="blue"/> | |||
<fo:table-column background-color="green"/> | |||
<fo:table-column column-width="proportional-column-width(1)" background-color="green"/> | |||
<fo:table-body> | |||
<fo:table-row> | |||
<fo:table-cell display-align="before"><fo:block>Some text to make this cell |
@@ -127,6 +127,7 @@ | |||
</target> | |||
<!-- =================================================================== --> | |||
<!-- Compares new test pdf files to reference pdf files --> | |||
<!-- N.B. All comparisons fail due to differences in /CreationDate --> | |||
<!-- =================================================================== --> | |||
<target name="comparePDF" depends="newPDF"> | |||
<compare referenceDirectory="${referenceDir}" testDirectory="${testDir}" filenames="normal.pdf,table.pdf,list.pdf,link.pdf,border.pdf,images.pdf,extensive.pdf,readme.pdf,fonts.pdf,bordershorthand.pdf,character.pdf,corresprop.pdf,hyphen.pdf,inhprop.pdf,instream.pdf,leader.pdf,newlinktest.pdf,normalex.pdf,pdfoutline.pdf,simple.pdf,textdeko.pdf,tableunits.pdf"/> | |||
@@ -144,6 +145,7 @@ | |||
<!-- =================================================================== --> | |||
<!-- Starts the test --> | |||
<!-- N.B. All tests fail due to differences in /CreationDate --> | |||
<!-- =================================================================== --> | |||
<target name="runtest" depends="comparePDF"> | |||
<echo message="Running Fop tests"/> | |||
@@ -154,6 +156,9 @@ | |||
<target name="clean" depends="init"> | |||
<delete dir="${testDir}"/> | |||
</target> | |||
<target name="cleantest" depends="init"> | |||
<delete dir="${referenceDir}"/> | |||
</target> | |||
</project> | |||
<!-- End of file --> |
@@ -794,7 +794,7 @@ XML Syntax | |||
<fo:block> | |||
Here we have some examples of how the XML can be specified in the fo document. | |||
<fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="350pt"/> | |||
<fo:table-column column-width="150pt"/> | |||
<fo:table-body> | |||
@@ -932,7 +932,7 @@ Sizing | |||
The size of the instream-foreign-object is obtained in a number of ways. | |||
<fo:block> | |||
<fo:table xmlns:svg="http://www.w3.org/2000/svg"> | |||
<fo:table xmlns:svg="http://www.w3.org/2000/svg" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="350pt"/> | |||
<fo:table-column column-width="150pt"/> | |||
<fo:table-body> |
@@ -30,7 +30,7 @@ | |||
Table 1: cell background | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -72,7 +72,7 @@ | |||
Table 1: row background | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -152,7 +152,7 @@ | |||
Table 1: column background | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm" background-color="green"/> | |||
<fo:table-column column-width="3cm" background-color="red"/> | |||
<fo:table-column column-width="3cm" background-color="blue"/> | |||
@@ -219,7 +219,7 @@ | |||
Table 1: column backgrounds over page | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm" background-color="green"/> | |||
<fo:table-column column-width="3cm" background-color="red"/> | |||
<fo:table-column column-width="3cm" background-color="blue"/> | |||
@@ -286,7 +286,7 @@ | |||
Table 1: body background | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -323,7 +323,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -360,7 +360,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -397,7 +397,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -438,7 +438,7 @@ | |||
Table 1: table background | |||
</fo:block> | |||
<fo:table background-color="green"> | |||
<fo:table background-color="green" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -475,7 +475,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table background-color="red"> | |||
<fo:table background-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -516,7 +516,7 @@ | |||
Table 1: combinations | |||
</fo:block> | |||
<fo:table background-color="green"> | |||
<fo:table background-color="green" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2.5cm"/> | |||
<fo:table-column column-width="2.5cm" background-color="green"/> | |||
<fo:table-column column-width="2.5cm" background-color="red"/> |
@@ -30,7 +30,7 @@ | |||
Table 1: cell borders | |||
</fo:block> | |||
<fo:table border-collapse="separate"> | |||
<fo:table border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -186,7 +186,7 @@ | |||
Table 2: row borders | |||
</fo:block> | |||
<fo:table border-collapse="collapse"> | |||
<fo:table border-collapse="collapse" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -310,7 +310,7 @@ | |||
Table 3: column borders | |||
</fo:block> | |||
<fo:table border-collapse="collapse"> | |||
<fo:table border-collapse="collapse" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm" border-left-color="green" border-left-width="0.5pt" border-left-style="solid"/> | |||
<fo:table-column column-width="3cm" border-top-color="red" border-top-width="0.5pt" border-top-style="solid"/> | |||
<fo:table-column column-width="3cm" border-right-color="blue" border-right-width="0.5pt" border-right-style="solid"/> | |||
@@ -377,7 +377,7 @@ | |||
Table 4: column borders over page | |||
</fo:block> | |||
<fo:table border-collapse="collapse"> | |||
<fo:table border-collapse="collapse" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm" border-left-color="green" border-left-width="0.5pt" border-left-style="solid"/> | |||
<fo:table-column column-width="3cm" border-top-color="red" border-top-width="0.5pt" border-top-style="solid"/> | |||
<fo:table-column column-width="3cm" border-right-color="blue" border-right-width="0.5pt" border-right-style="solid"/> | |||
@@ -444,7 +444,7 @@ | |||
Table 5: body borders | |||
</fo:block> | |||
<fo:table border-collapse="separate"> | |||
<fo:table border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -480,7 +480,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table border-collapse="separate"> | |||
<fo:table border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -516,7 +516,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table border-collapse="separate"> | |||
<fo:table border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -552,7 +552,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table border-collapse="separate"> | |||
<fo:table border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -588,7 +588,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table border-collapse="separate"> | |||
<fo:table border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -628,8 +628,7 @@ | |||
Table 6: table borders | |||
</fo:block> | |||
<fo:table border-left-color="green" border-left-width="0.5pt" border-left-style="solid" | |||
border-collapse="separate"> | |||
<fo:table border-left-color="green" border-left-width="0.5pt" border-left-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -665,7 +664,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table border-top-color="red" border-top-width="0.5pt" border-top-style="solid" border-collapse="separate"> | |||
<fo:table border-top-color="red" border-top-width="0.5pt" border-top-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -701,7 +700,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table border-right-color="blue" border-right-width="0.5pt" border-right-style="solid" border-collapse="separate"> | |||
<fo:table border-right-color="blue" border-right-width="0.5pt" border-right-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -737,7 +736,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table border-bottom-color="yellow" border-bottom-width="0.5pt" border-bottom-style="solid" border-collapse="separate"> | |||
<fo:table border-bottom-color="yellow" border-bottom-width="0.5pt" border-bottom-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -773,7 +772,7 @@ | |||
</fo:table-body> | |||
</fo:table> | |||
<fo:table border-color="orange" border-width="0.5pt" border-style="solid" border-collapse="separate"> | |||
<fo:table border-color="orange" border-width="0.5pt" border-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -813,7 +812,7 @@ | |||
Table 7: combinations | |||
</fo:block> | |||
<fo:table border-left-color="green" border-left-width="0.5pt" border-left-style="solid" border-collapse="collapse"> | |||
<fo:table border-left-color="green" border-left-width="0.5pt" border-left-style="solid" border-collapse="collapse" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2.5cm"/> | |||
<fo:table-column column-width="2.5cm" border-left-color="green" border-left-width="0.5pt" border-left-style="solid"/> | |||
<fo:table-column column-width="2.5cm" border-top-color="red" border-top-width="0.5pt" border-top-style="solid"/> | |||
@@ -1025,7 +1024,7 @@ | |||
implementation status. | |||
</fo:block> | |||
<fo:table border-collapse="collapse" table-layout="fixed"> | |||
<fo:table border-collapse="collapse" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm" border-color="blue" border-width="0.5pt" border-style="solid"/> | |||
<fo:table-column column-width="3cm" border-color="blue" border-width="0.5pt" border-style="solid"/> | |||
<fo:table-column column-width="3cm" border-color="blue" border-width="0.5pt" border-style="solid"/> | |||
@@ -1090,7 +1089,7 @@ | |||
fo:table-cell level. | |||
</fo:block> | |||
<fo:table border-collapse="collapse" table-layout="fixed"> | |||
<fo:table border-collapse="collapse" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -1159,7 +1158,7 @@ | |||
Check the FOP compliance page for current implementation status. | |||
</fo:block> | |||
<fo:table border-collapse="collapse" table-layout="fixed" | |||
<fo:table border-collapse="collapse" table-layout="fixed" width="100%" | |||
border-style="solid" border-width="5pt" border-color="yellow"> | |||
<fo:table-column column-width="3cm" | |||
border-style="solid" border-width="3pt" border-color="black"/> | |||
@@ -1264,7 +1263,7 @@ | |||
the border properties differ only on color. | |||
</fo:block> | |||
<fo:table border-collapse="collapse" table-layout="fixed"> | |||
<fo:table border-collapse="collapse" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm" | |||
border-style="solid" border-width="3pt" border-color="black"/> |
@@ -34,7 +34,7 @@ | |||
Table 1: basic break after with next | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -81,7 +81,7 @@ | |||
Table 2: basic break before with next | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -128,7 +128,7 @@ | |||
Table 3: basic break before a keep with next | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -175,7 +175,7 @@ | |||
Table 4: basic break after a keep with previous | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -222,7 +222,7 @@ | |||
Table 5: basic break after a keep with previous | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> |
@@ -30,7 +30,7 @@ | |||
Table 1: with header | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -311,7 +311,7 @@ | |||
Table 2: with footer | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -592,7 +592,7 @@ | |||
Table 3: with header and footer and keeps | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -888,7 +888,7 @@ | |||
Table 4: cells spanning columns | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -940,7 +940,7 @@ | |||
Table 5: cells spanning rows | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="48pt"/> | |||
<fo:table-column column-width="48pt"/> | |||
<fo:table-column column-width="48pt"/> | |||
@@ -1054,7 +1054,7 @@ | |||
Table 6: table with header and multiple body's | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -1242,7 +1242,7 @@ | |||
Table 6: table with footer and multiple body's | |||
</fo:block> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> |
@@ -34,7 +34,7 @@ | |||
Table 1: basic keep with next | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -81,7 +81,7 @@ | |||
Table 1: basic keep with previous | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -128,7 +128,7 @@ | |||
Table 1: basic keep with next and keep with previous | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -192,7 +192,7 @@ | |||
Table 1: basic multiple keep with next after normal row | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -324,7 +324,7 @@ | |||
Table 1: basic multiple keep (next and previous) after normal row | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="6cm"/> | |||
@@ -456,7 +456,7 @@ | |||
Table 1: basic multiple keep with next after normal row with normal row in middle | |||
</fo:block> | |||
<fo:table border-width="0.5pt" border-color="red"> | |||
<fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="6cm"/> |
@@ -30,7 +30,7 @@ | |||
Table 1: with header | |||
</fo:block> | |||
<fo:table table-omit-header-at-break="true"> | |||
<fo:table table-omit-header-at-break="true" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -311,7 +311,7 @@ | |||
Table 2: with footer | |||
</fo:block> | |||
<fo:table table-omit-footer-at-break="true"> | |||
<fo:table table-omit-footer-at-break="true" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -592,7 +592,7 @@ | |||
Table 3: with header and footer and keeps | |||
</fo:block> | |||
<fo:table table-omit-header-at-break="true" table-omit-footer-at-break="true"> | |||
<fo:table table-omit-header-at-break="true" table-omit-footer-at-break="true" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -888,7 +888,7 @@ | |||
Table 6: table with multiple body's | |||
</fo:block> | |||
<fo:table table-omit-header-at-break="true"> | |||
<fo:table table-omit-header-at-break="true" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
@@ -1076,7 +1076,7 @@ | |||
Table 6: table with multiple body's | |||
</fo:block> | |||
<fo:table table-omit-footer-at-break="true"> | |||
<fo:table table-omit-footer-at-break="true" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> | |||
<fo:table-column column-width="2cm"/> |
@@ -30,7 +30,7 @@ | |||
Table 1: spaces around cells | |||
</fo:block> | |||
<fo:table border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -109,7 +109,7 @@ | |||
Table 2: spaces around rows | |||
</fo:block> | |||
<fo:table border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -190,7 +190,7 @@ | |||
Table 3: spaces around body | |||
</fo:block> | |||
<fo:table border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -281,7 +281,7 @@ | |||
</fo:block> | |||
<fo:block border-style="solid" border-width="0.5pt"> | |||
<fo:table space-before.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table space-before.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -309,7 +309,7 @@ | |||
</fo:block> | |||
<fo:block border-style="solid" border-width="0.5pt"> | |||
<fo:table padding-left="5pt" border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table padding-left="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -337,7 +337,7 @@ | |||
</fo:block> | |||
<fo:block border-style="solid" border-width="0.5pt"> | |||
<fo:table padding-right="5pt" border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table padding-right="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -365,7 +365,7 @@ | |||
</fo:block> | |||
<fo:block border-style="solid" border-width="0.5pt"> | |||
<fo:table space-after.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table space-after.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -397,7 +397,7 @@ | |||
</fo:block> | |||
<fo:block border-style="solid" border-width="0.5pt"> | |||
<fo:table space-after.optimum="20pt" border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table space-after.optimum="20pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
@@ -462,7 +462,7 @@ | |||
</fo:block> | |||
<fo:block border-style="solid" border-width="0.5pt"> | |||
<fo:table space-after.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red"> | |||
<fo:table space-after.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> | |||
<fo:table-column column-width="3cm"/> |
@@ -39,7 +39,7 @@ | |||
<tr> | |||
<td>default font characters</td> | |||
<td><link href="fo/fonts.fo">fonts.fo</link></td> | |||
<td><link href="fo/fonts.fo.pdf">fonts.fo.pdf</link></td> | |||
<td><link href="fo/fonts.pdf">fonts.pdf</link></td> | |||
</tr> | |||
</table> | |||
<p>Other basic examples on the use of XSL-FO can be found in the FOP distribution in | |||
@@ -100,17 +100,17 @@ Embedding images in FO: | |||
<tr> | |||
<td>align in larger viewport</td> | |||
<td><link href="fo/align.fo">align.fo</link></td> | |||
<td><link href="fo/align.fo.pdf">align.fo.pdf</link></td> | |||
<td><link href="fo/align.pdf">align.pdf</link></td> | |||
</tr> | |||
<tr> | |||
<td>align in smaller viewport</td> | |||
<td><link href="fo/align2.fo">align2.fo</link></td> | |||
<td><link href="fo/align2.fo.pdf">align2.fo.pdf</link></td> | |||
<td><link href="fo/align2.pdf">align2.pdf</link></td> | |||
</tr> | |||
<tr> | |||
<td>scaling image</td> | |||
<td><link href="fo/size.fo">size.fo</link></td> | |||
<td><link href="fo/size.fo.pdf">size.fo.pdf</link></td> | |||
<td><link href="fo/size.pdf">size.pdf</link></td> | |||
</tr> | |||
</table> | |||
<p>Look also into the directory examples/fo/svg. There you find some very extensive SVG examples. | |||
@@ -132,7 +132,7 @@ Instream Foreign Object images in FO, there are more on the | |||
<tr> | |||
<td>embedding svg in viewport</td> | |||
<td><link href="fo/embed.fo">embed.fo</link></td> | |||
<td><link href="fo/embed.fo.pdf">embed.fo.pdf</link></td> | |||
<td><link href="fo/embed.pdf">embed.pdf</link></td> | |||
</tr> | |||
</table> | |||
</section> |
@@ -19,19 +19,18 @@ | |||
<fo:root font-family="Times Roman" font-size="12pt" text-align="center" xmlns:fo="http://www.w3.org/1999/XSL/Format"> | |||
<fo:layout-master-set> | |||
<fo:simple-page-master | |||
margin-right="1.5cm" | |||
margin-left="1.5cm" | |||
margin-bottom="2cm" | |||
margin-top="1cm" | |||
page-width="21cm" | |||
page-height="29.7cm" | |||
master-name="left"> | |||
<fo:region-before extent="1cm"/> | |||
<fo:region-body margin-top="1cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
<fo:simple-page-master | |||
margin-right="1.5cm" | |||
margin-left="1.5cm" | |||
margin-bottom="2cm" | |||
margin-top="1cm" | |||
page-width="21cm" | |||
page-height="29.7cm" | |||
master-name="left"> | |||
<fo:region-body margin-top="1cm"/> | |||
<fo:region-before extent="1cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
</fo:layout-master-set> | |||
<fo:page-sequence id="N2528" master-reference="left"> |
@@ -19,19 +19,18 @@ | |||
<fo:root font-family="Times Roman" font-size="12pt" text-align="center" xmlns:fo="http://www.w3.org/1999/XSL/Format"> | |||
<fo:layout-master-set> | |||
<fo:simple-page-master | |||
margin-right="1.5cm" | |||
margin-left="1.5cm" | |||
margin-bottom="2cm" | |||
margin-top="1cm" | |||
page-width="21cm" | |||
page-height="29.7cm" | |||
master-name="left"> | |||
<fo:region-before extent="1cm"/> | |||
<fo:region-body margin-top="1cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
<fo:simple-page-master | |||
margin-right="1.5cm" | |||
margin-left="1.5cm" | |||
margin-bottom="2cm" | |||
margin-top="1cm" | |||
page-width="21cm" | |||
page-height="29.7cm" | |||
master-name="left"> | |||
<fo:region-body margin-top="1cm"/> | |||
<fo:region-before extent="1cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
</fo:layout-master-set> | |||
<fo:page-sequence id="N2528" master-reference="left"> | |||
@@ -59,7 +58,7 @@ Default align: | |||
<fo:block> | |||
Default align: | |||
(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" src="images/fop.jpg"/>), start-before | |||
(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="start" src="images/fop.jpg"/>), start-center | |||
(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="before" src="images/fop.jpg"/>), start-center | |||
(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="center" src="images/fop.jpg"/>), start-after | |||
(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="after" src="images/fop.jpg"/>), center-before | |||
(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="center" display-align="before" src="images/fop.jpg"/>), center-after |
@@ -0,0 +1,70 @@ | |||
<?xml version="1.0"?> | |||
<!-- | |||
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. | |||
--> | |||
<!-- =========================================================================== --> | |||
<project default="newPDF" basedir="."> | |||
<!-- =================================================================== --> | |||
<!-- Initialization target --> | |||
<!-- =================================================================== --> | |||
<target name="init"> | |||
<tstamp/> | |||
<mkdir dir="tests"/> | |||
<property name="testDir" value="tests"/> | |||
<property name="foDir" value="."/> | |||
<path id="run-classpath"> | |||
<fileset dir="../../../../../lib"> | |||
<include name="*.jar"/> | |||
</fileset> | |||
<pathelement location="../../../../../build/fop.jar"/> | |||
</path> | |||
<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop" classpathref="run-classpath"/> | |||
</target> | |||
<!-- =================================================================== --> | |||
<!-- Help on usage --> | |||
<!-- =================================================================== --> | |||
<target name="usage"> | |||
<echo message="Use '-projecthelp' instead"/> | |||
</target> | |||
<!-- =================================================================== --> | |||
<!-- Produces new test files (function) --> | |||
<!-- =================================================================== --> | |||
<target name="newTestFiles"> | |||
<fop format="${mimetype}" outdir="${outDir}" messagelevel="${msglevel}" relativebase="true" throwexceptions="false"> | |||
<fileset dir="."> | |||
<include name="**/*.fo"/> | |||
</fileset> | |||
</fop> | |||
</target> | |||
<!-- =================================================================== --> | |||
<!-- Produces new test PDF files --> | |||
<!-- =================================================================== --> | |||
<target name="newPDF" depends="init" description="Creates a new set of PDF test files"> | |||
<antcall target="newTestFiles"> | |||
<param name="mimetype" value="application/pdf"/> | |||
<param name="msglevel" value="warn"/> | |||
<param name="outDir" value="${testDir}"/> | |||
</antcall> | |||
</target> | |||
<!-- =================================================================== --> | |||
<!-- Clean targets --> | |||
<!-- =================================================================== --> | |||
<target name="clean" depends="init"> | |||
<delete dir="${testDir}"/> | |||
</target> | |||
</project> | |||
<!-- End of file --> |
@@ -23,19 +23,18 @@ | |||
<fo:root font-family="Times Roman" font-size="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format"> | |||
<fo:layout-master-set> | |||
<fo:simple-page-master | |||
margin-right="1.5cm" | |||
margin-left="1.5cm" | |||
margin-bottom="2cm" | |||
margin-top="1cm" | |||
page-width="21cm" | |||
page-height="29.7cm" | |||
master-name="left"> | |||
<fo:region-before extent="1cm"/> | |||
<fo:region-body margin-top="1cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
<fo:simple-page-master | |||
margin-right="1.5cm" | |||
margin-left="1.5cm" | |||
margin-bottom="2cm" | |||
margin-top="1cm" | |||
page-width="21cm" | |||
page-height="29.7cm" | |||
master-name="left"> | |||
<fo:region-body margin-top="1cm"/> | |||
<fo:region-before extent="1cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
</fo:layout-master-set> | |||
<fo:page-sequence id="N2528" master-reference="left"> |
@@ -1,87 +0,0 @@ | |||
%PDF-1.3 | |||
%ª«¬ | |||
4 0 obj | |||
<< /Type /Info | |||
/Producer (FOP 0.20.5) >> | |||
endobj | |||
5 0 obj | |||
<< /Length 1556 /Filter [ /ASCII85Decode /FlateDecode ] | |||
>> | |||
stream | |||
Gb"0W9p=9h(^KQB5D>011Kd^2(:&!s-8.0G?92NC6am<+$Zp"a8L^3ZrE?Z%8B:u_OFn)DOGr-/INIQ=q\oZh2p:3YpSJW^j5k;[E4:*BGe#CoakN"mYH!sFZ8>$).@Y@g/-!,+\,3geIX]sgn&ks8h-P:I5CJ>(?M<peVjI(+?b[S@pZ8%/ns@)HU2Lio<0CtCPX[Q)8_(<FftM:sit[&L*Ob:OKat[.EkI%ON)unFn92KJrG.J!cH<PB*A9Y6q24X,`S^&S[!UEIh+u"#V93'eZc#bITL93O^P^p,I3BHrmbEFVPF$aP[Jemg]0^JG[GBF4ZUN[?=KSW(*k#W!J+1'Bh;+g]["$p!rMJIh;uH?[:#+dG<U]5@$Jf'eIGN8iGJ0k>3srEp%+j`GFC2lVAW?-k]'A%*A+X0,Y&n>gXrgJRd8etuLIh.uop[SIXoW1(Me8(mZ+eI84[tkfD8Y2>AOP5_.60qf-b].hK50R#%EJ8&ck"-ed6),XDAZ4I/+.NABKpXVTecSBnJhE/-BIl,-QFP0P>7hC<B]QN&C.,Y8Gd*8%[k^9Hi4&$B)L$>kMsi)STHZs%$'J5nT--!YC%F5o`L74Wr:Be]r#sCZ+lgS/E:AD3,3jV\ej=Ch)Mm&T3L9Qof&akqNaE.ePBeD$+%h=PJ*s!3>n&C]igN#KOB]'j8H"aks*5=iHX3ZW>2HPS[b]*`)73_Q%NVce\!_DKr]/-Y/42K3d4X3_6^:.XnTm.M/Ws*C)U,oQ,$R7M5;IQWWpQNXEeNq$<R<Z?j3W^FmcIHJnJLtn"7q,lIV18P-__e<Fgr_6rPiH7SM(LJ5hU;;F)d'"fZPjPmA)PrUM!Qp%*M$jflJgibHB!cmc"N9.VAd;)(V]?<k_^!EQuC=90p["fud#Pn6%clf97o>-MaM&m21cZ'7XGeK>`6"O7>T<ko&E!@qO]XE0/^&3L?dC3.eQYbEX_<h1cDLEnJS=-O,Fo?4qC$r@,-5S^4!<M2Bs<$Qsaan'ESI[F:IQD.j]$*GaN/1&\A3Cq0H&Y'R;YM^/.JlhFK?K]UL7.;t8P=rd#Au7HmY>plj8g:-IOGkatB8+,OGQk;/'tf.M\ap^O]Zf]N/IY_K;_Cf\L-lRiL(u"ei;CH2-j*X=.qf*gTG=iZSQ6qr)cg<j)q4H%YZ.\Z,10D%M5;J,.L4)Jb&CAe^;<tH$=DaBI%@mQK]&)u;bP"C=,]);Y<#<---<LF5r/0+2(Jf:i@B;0YOE:@cJ;PgE8YMeBD+'tMJH7H>BtH@(6&KA0C:ed<NAL]hd<_.;BdP%K4MpV]JSDt]5SSS_HjZ5GBXA0<7Li@R\gm\NFJc%&ogoS@O[.ub!@ekBUfe=Y.td^!a":e>j%+t+a=UNaVEi.YkDdNJud0091bqd)C/fC``XJC$=&-4E!<D[FmcaPJcf8u<fEkZ?OjPcl:rlH2j2]h[<`2[_>YWO/1#n25qkWC<X.PM>_ic-+YL^(]=:7:C?abAqh?bqD4b-,1\n_j+*T5NVnRDAT6?<U@WcP17PIi#^4hB/rspg7gYM~> | |||
endstream | |||
endobj | |||
6 0 obj | |||
<< /Type /Page | |||
/Parent 1 0 R | |||
/MediaBox [ 0 0 595 842 ] | |||
/Resources 3 0 R | |||
/Contents 5 0 R | |||
>> | |||
endobj | |||
7 0 obj | |||
<< /Length 1817 /Filter [ /ASCII85Decode /FlateDecode ] | |||
>> | |||
stream | |||
Gb"0W:N+uG(^BKA5)#"'Yd"$U8imem#OF-PR"6:/*k]utN6sEG3%4Xj7nFsp;3J?+4m;Cb/S%)3?CFKB?VSYnqb?ePK?>&Z1uIXURQk@7VtS,NabaJ,Y-fH"AbkJUs)n(bDSLTWQi$]3.r%#RgR?#YrF>m&j5#._.Gt&lrOg7dfGe=DCLO9.JlJ#\Nu:_+'9XObCm7%pIqEiC#]3r(6ZXV,rHP^:2:!="7[p5gQd%aYoh4"?CMW%pVqf;,\4sMKf<>Y[[oqT?]$9s%n,K_VArek#gUbF!FjDL<f/M_nI7j[N(Sm.]Wjj^^X.[)1g9opE<O[0BX3jCRC#>/(H\Zt^D8g"tMc@0c>I<YL)PBJq<Yb-Gl^BiRqaf,5=oU6pl&g!lMKY/W;-W=o:>%?@\t`PT_@NNSUM//U^7dnFB>]k,gsGT'8p>p-/_"t]4N`X)^SA/n>4O8[WK$DZi:"X[8@`0iGF;K/oBJDZ9tRQ^T20MuX/In(9BX/odV^W3rKV8qhu&C&.Ui@aH`nog^">K.8!\<CbO;jA8pD*MA_f>SZl<4uYB;@Nk0tuRbZQ^4Zl`RW%CQc6l9V>:g\X^LPnhTI(tXiC5P1&O>dih=]W7P0+tFD=.[%`'UfWeAOpP4=dVor(_H")Q=5iGu?005^2='PfY.j8J=(&-[];:<l9bJ,&#hDj."`%!AYQ@k@$<R<Z?sPjq69;_j@GTJ+k>`7n,`KdDas8\bkm\B&A4"hR1fT1/:_fus<N*KP<MaYXc)UX7DLX_9k$aN$,J&\><CpXd;FK$3aTS\ZBtt'X!@qO]XFPH\YU\Vu)St.eR@`EV"d+89V$UU:P#AMhgD3`r/kZfjOs20H@)CZo%(HJMi"k+">B%2tDAdYA`K1Sda):WQ;.YHi:?tGNSg5X.4ecbW9V!N#'S<B)'s>DR\-c<hmODkpY$"i\dtAg/Ar1e%#oi@`P/N$La-;XJaci0JKto3`"g?i!]RnbCo.$QBCOt*6.:L?"KM>*j=-Y$X,X&#FPY<*N9aZGQn-WL<.sM6$CZe\5cE7=W(ZpJ.6/"Y,KQRN)PJi,BKk(lkffCYd>!XZP"g+F4['#tNb0soB]CI].`JJ$#/^9_Q\FLn"+mCRiUL`Z"CJkGNJlhFK?GS.:>s#6[Hb1&@?()XK^4M2BZ*,oS9LsJ(`@./D2(]8Ei@B;0YOE:@Y2*0Q]NkoZ/kuj+,'5q+XHLMT,b>rMPKCr*@3P+I?GS.:"g?j,mCZ'Ym@*'X=+=PH)to%WGsV)l\>r8sj/sOC"]p_r\of,GA;.+H's^0W[EIir]<[S6Z`l&V$F><sVH>)o:D+>(*`=mgV@L0aKjZEIKrqQo[_gV'gWGqjlRK%F1W!Bq+pYQ6,V^J,-0:n4_Uc(NCk]!q't1t[fXc61"a>,!D']\<G9=2?le#JE2Yh5Y,q?c(\&BGM>B?a8_H-VhA(.Qi,aB[Mh<MIJrU<u4p8@NPg4a!]HUU%C"C_!=2A_5k-70un,]&]=]dZ\`!H,[^\,ePH#2F!L4!5Am3d=S.rtet1DeYBZ)9"mCOX)8!]qp+@9YE#Q$:.bW$=0>UFG6l5f<tDUW7J+S>o.&e<C*#%OfU<09Lr])D44.H_C$c8=Wo;+Krg@NZE@KaJDf0nF]6C[:nh/r=d&F?+,c5>K),#!I2T6r<l$7f"fl$RmAr(?41i![XCmel?e:;s#lD"fc\IkNRhp:0Qc#fjKD<PeD8,\(cFYa5L\!.0])1S''m`&lNLkFP?K+K&a,A18gZeADJ+r!>R/Z're+oUP&g(8R_^!@;&u7($?83Z%nS$eZO5XGIU386~> | |||
endstream | |||
endobj | |||
8 0 obj | |||
<< /Type /Page | |||
/Parent 1 0 R | |||
/MediaBox [ 0 0 595 842 ] | |||
/Resources 3 0 R | |||
/Contents 7 0 R | |||
>> | |||
endobj | |||
9 0 obj | |||
<< /Type /Font | |||
/Subtype /Type1 | |||
/Name /F5 | |||
/BaseFont /Times-Roman | |||
/Encoding /WinAnsiEncoding >> | |||
endobj | |||
10 0 obj | |||
<< /Type /Font | |||
/Subtype /Type1 | |||
/Name /F7 | |||
/BaseFont /Times-Bold | |||
/Encoding /WinAnsiEncoding >> | |||
endobj | |||
1 0 obj | |||
<< /Type /Pages | |||
/Count 2 | |||
/Kids [6 0 R 8 0 R ] >> | |||
endobj | |||
2 0 obj | |||
<< /Type /Catalog | |||
/Pages 1 0 R | |||
>> | |||
endobj | |||
3 0 obj | |||
<< | |||
/Font << /F5 9 0 R /F7 10 0 R >> | |||
/ProcSet [ /PDF /ImageC /Text ] >> | |||
endobj | |||
xref | |||
0 11 | |||
0000000000 65535 f | |||
0000004058 00000 n | |||
0000004122 00000 n | |||
0000004172 00000 n | |||
0000000015 00000 n | |||
0000000071 00000 n | |||
0000001719 00000 n | |||
0000001825 00000 n | |||
0000003734 00000 n | |||
0000003840 00000 n | |||
0000003949 00000 n | |||
trailer | |||
<< | |||
/Size 11 | |||
/Root 2 0 R | |||
/Info 4 0 R | |||
>> | |||
startxref | |||
4261 | |||
%%EOF |
@@ -18,32 +18,32 @@ | |||
<!-- $Id$ --> | |||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> | |||
<!-- defines the layout master --> | |||
<fo:layout-master-set> | |||
<fo:simple-page-master master-name="first" | |||
page-height="29.7cm" | |||
page-width="21cm" | |||
margin-top="1cm" | |||
margin-bottom="2cm" | |||
margin-left="2.5cm" | |||
margin-right="2.5cm"> | |||
<fo:region-body margin-top="1cm"/> | |||
<fo:region-before extent="1cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
</fo:layout-master-set> | |||
<!-- starts actual layout --> | |||
<fo:page-sequence master-reference="first"> | |||
<!-- defines the layout master --> | |||
<fo:layout-master-set> | |||
<fo:simple-page-master | |||
master-name="first" | |||
page-height="29.7cm" | |||
page-width="21cm" | |||
margin-top="1cm" | |||
margin-bottom="2cm" | |||
margin-left="2.5cm" | |||
margin-right="2.5cm"> | |||
<fo:region-body margin-top="1cm"/> | |||
<fo:region-before extent="1cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
</fo:layout-master-set> | |||
<!-- starts actual layout --> | |||
<fo:page-sequence master-reference="first"> | |||
<fo:flow flow-name="xsl-region-body"> | |||
<fo:block font-family="Helvetica" font-size="14pt"> | |||
<fo:block font-family="Helvetica" font-size="14pt"> | |||
Helvetica | |||
</fo:block> | |||
<fo:block space-after.optimum="10pt" font-family="Helvetica" font-size="10pt"> | |||
<fo:table> | |||
<fo:block space-after.optimum="10pt" font-family="Helvetica" font-size="10pt"> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="65pt"/> | |||
<fo:table-column column-width="30pt"/> | |||
<fo:table-column column-width="65pt"/> | |||
@@ -303,7 +303,7 @@ Helvetica | |||
Times Roman | |||
</fo:block> | |||
<fo:block space-after.optimum="10pt" font-family="Times Roman" font-size="10pt"> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="65pt"/> | |||
<fo:table-column column-width="30pt"/> | |||
<fo:table-column column-width="65pt"/> | |||
@@ -563,7 +563,7 @@ Times Roman | |||
Courier | |||
</fo:block> | |||
<fo:block space-after.optimum="10pt" font-family="Courier" font-size="10pt"> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="65pt"/> | |||
<fo:table-column column-width="30pt"/> | |||
<fo:table-column column-width="65pt"/> | |||
@@ -823,7 +823,7 @@ Courier | |||
ZapfDingbats: | |||
</fo:block> | |||
<fo:block space-after.optimum="10pt" font-family="ZapfDingbats" font-size="10pt"> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="65pt"/> | |||
<fo:table-column column-width="30pt"/> | |||
<fo:table-column column-width="65pt"/> | |||
@@ -1071,7 +1071,7 @@ Courier | |||
Symbol: | |||
</fo:block> | |||
<fo:block space-after.optimum="10pt" font-family="Symbol" font-size="10pt"> | |||
<fo:table> | |||
<fo:table table-layout="fixed" width="100%"> | |||
<fo:table-column column-width="65pt"/> | |||
<fo:table-column column-width="30pt"/> | |||
<fo:table-column column-width="65pt"/> |
@@ -1,160 +0,0 @@ | |||
%PDF-1.4 | |||
%ª«¬ | |||
4 0 obj | |||
<< /Type /Info | |||
/Producer (FOP 0.20.5) >> | |||
endobj | |||
5 0 obj | |||
<< /Length 2756 /Filter [ /ASCII85Decode /FlateDecode ] | |||
>> | |||
stream | |||
Gas2O=aO+:'LgpN.p>dQQ0),tXf?8Xl8sh^A"4[?L]L?S.Yp(`G)J$07;CF[q0Xk,m[_:;p.hg?\%DUPMj%;2G1eG?n*DpXrcNRk=kqghM^JC4(9q#F6<M1iQEg+@rM.>kF&rk?5<4+=n+NmTMjoY'X2c"#Z%_Ip=kXFJF_B#_[H@&U`<@2^l+]E+l1pZ!Cop\)PH?hg\+B/,61.dsGk/JYH2/>>gUQl'^O&$qIgP0_PeXi&QbNt"`g=GeR$XG9Q\Vt!J+koUIg+m`>Q4&kH259:cpnuO)YE2Y+(Xr3H2XcdDe8Lq]_jXK4.1I\07P#'<[L&Tb:eD$aQ1Beq%DbJ9R`Fs?_!J[FZFa!bf^reYKF[C8A"tK/EcFDnJ:3"S@aEl4-6r5g`7ZS"h?/HmND$@jL1SjK>\"VRr[p,&g'EraP7s/X*K!&QFTB@f-"GBg`c-Q5TXJ(OS?p@pG-s6q\pYrAaYZS2aQkBmZ@1P5]10$OS?4MDT]N!OS<rahNW)"+n(nG\QbDAD^"QiaC@7)(@p=74Hso*+n#NSI6%$;nihZ</a(tWhC"DsEpbO?rEYLhR60L.$HS4N*V01Na;^O/jSeAVgob2UOSAK8*bFc$pCBM1AF>QR%mfVpmZ@1(5i0Z=+n$M*gm)sTOS;O9DTfS;aSVkX2s&gXjSdfFgoS]0HcZ(s+CCCTpQ5,tON2D0*qK<@aA)011uohL?]\T5a@"t%,e`]/LWFs6H3#3#RK&`J6:;k]J"?4`6lo6U"8'`(*b'V<5R'PD*eJm*oKktfP5c!UKo.u\s'*nZ('VeYGGH$-$5!2@U_b]lOT+]?04Yb>rjPHPBG;Th5Cd(n-pReQP$[&p5QTX`^!KW,!k:mL_4pu6n0@1ONrg$24jj]\"Xnnn82#W1TE'Ef]c^4'!k;$P@AEo!56AMb;Ln[0+MCTLJG_VW]jO`kr;T*0iM6bTs-<3X8eLXo)sN'@,38b9klm=rjSpt!Kp<kCs*)m!/4IY['@86]7EGKNU_d9nOT25S(LDu\s$'(.^_@slJ!"&n.74%6-G:O#K`(j;H=<ZVq>ZfR!_j9tru^KZRPp8B"5E*hD.fR'["/K0$b`fV$_aI-UbGs8SLn%O6#@a#a[0o_fg7*%"'J;5H>gtB6;ebYA$XIN>IG*3g-?jGL#1XkKb2dh:@6Wubr&]2<GgsRDE[B@P19c2R4N#)Pccp+c=B4fTnKhI=6S6$?J$t3QI?$nQ7R-Vfg7Z6"+OpHKaotE#\nMOQhDO.a?jR@_ls@dC:4]3l7hQjLRKfJ\N1.Gd%TkY'Y?C7H_@&^G]aksTOH.^_Hn7;4j[L`IWZM$5^T1-em[2Um=dl/LLH7N(Wp/,L-<sk.#N-ap5"&=1tH*f,OL0d=U0G<P6L?-10KB\&SWm4b<#!J8:.%@el,qOQN1P>E7Rrp\;']Dq5gL.E"22g,$Icji>UDXV6lij_DSh>!bsmkKkk?TPgt*F$eNa3.'E6m(TsIF:h&ai0:\`L:h]0o0@Hn"Z4Lp>W@sd8]hih:W@sd8]hj%@W@sd8]hj7FW@sdX]b#qaW@sd8]hj[RW@sd8]hjk2YV.QpKu2VqI:6hCPii8;$VPi?82jp`=P=.Z\cM]FdU"?S%G2J_p-RGM^qR%_(P6i5p4]?V:qRaO0-'A5in]-5iFjkYmfr+d7sgqS2dfuPg'bm3!W0a]?7=Y>fGBSA6Les/^2UFqMK]0rKql=X]Gn+/>1sA']+Oq73^.'^_7L<VU,kIt5Q;eYLj`,@+0pUYh2$JV*?VS@i8'3;;&paaL#CdCI8M",ZA%5mLj`,@+0pUYh2$JV*?TG?MK^<=7<O"!(4p`Tp-j+Oa;0AO,PFQKI)m(TG9cfMFaV7GJp/I5Kr;U\]Gn+/Wr#5n&A/se0<4n<[Lg*@YV3$R7CEc?S$4QGqo-iInSZ4XW9tJT6L\m0^8UH9fg>1G_S2u:(YM.EDSj,dmMFPCn8?+WW9tJT6L\m0^8UH9fg>1G_S2u:(YM.EDSj,dmMFPCn8?+WW9tH`$cT^aqkCZ/A.-5c$2^I.?XsP\]*\A/\mJtU_7L$NU:O]B$c0F]qkCZ/A.-5c`mBo4#I^A5Ca+Cr9^pb<]k#;5Jp<9KV]=,\K%hH1QV?oF>.oUFR4.3oYOU=J]l;.A!d_rkDd4#rAeRJDA:dmcl;_LU&_LmC)Fn&gG-Zt_?=WM*\ZH,`RgAN:`o*FfYa%ocq2u'@V(:?D-3AV;"@l]oF>a`t9."o3XZ1W>U>VA3n>KP3n$7eC?S]I^<&gID"TFPjDJTL;fgP<_RGc(c=28Y#lCM+ZK'J/Y9q:VXI>B>?d%2Wg-54TuF^`?<7e_R"'9mqY1/STV;<<,"NE$Zd-Fg>23A6jih%P+u5?.`Q"PFI+s'tZ2ioFb/G)!V!4POK$Y.#KpgV7rSpuo9+[>.8]*b5XST6W59[<2(ShO[$rp'3YX&jGo!9J#:K?4NTQ1JK:ZDI*gFH!C/Dh9N([,B'Wk<;UquIH&M:l7fE=&%pRn*TtuLH+3^sZV8W]GGf(pF_i,55<YL:F5&mJ>NtD*>T)>jdG.>hO64UG[SQ$do'7Ebd;9uLXlME+0!j:rQWqS4kAp0"8VX^&cbDBrp\]/_g\:X//F^Y+,M^#r5@]95q9'I6W/ag5ns;XcclT*uj'U*;K*"(#%KCI=*L+Xhqu+(VAY::H&:ETgJWBA$n<HcS3^TI0EoiL9NmK8R*;O-<,P9,m2nj=*,;dSX-baVo,F$B.$fAJ/pHP_$<5J~> | |||
endstream | |||
endobj | |||
6 0 obj | |||
<< /Type /Page | |||
/Parent 1 0 R | |||
/MediaBox [ 0 0 595 842 ] | |||
/Resources 3 0 R | |||
/Contents 5 0 R | |||
>> | |||
endobj | |||
7 0 obj | |||
<< /Length 2935 /Filter [ /ASCII85Decode /FlateDecode ] | |||
>> | |||
stream | |||
Gas2O=-jma'SPBB.u%SN_RLo"U`"2C^gpR<OtetcAE%Mt#"GslqY'^#I]5BohPsK0gZn=qd^@Wo9XjJ6B:iGoG+W(r].X%:]@cK]+m`ZsHPb]0m-EK^="`BQb8q_=\pMg#gP@?jrVt48.p$r`m*;b8p^g'q&b&j&msU$7gA(OFhY/=DCr>]H\8rsDC;V+n\@!W1DSmP!\1o:WBuBZFn%'.G[c,iln8L?&E7_MV*Pg^/KUXmT!'HLWF1)Oe!;E>VS86"__#%#PY&D4)J@e^%cF;aRi3lUU$Z1+g\1(G@@N-?hhNb*^i:oYYmZ440*#SY\n0k:=^HVkj+K>OY57DKaWWU"#!q9Mq#C_.:i(d5VIX_da<`B<QIiRCD<*^#`IfeP6WOa/K5.';IYuG!>INJT>-rnlOh^<r0;KY.tI0R27<S)l\(P)7Vl?_ss$?0(HXp;^+$#j+KXp;^+"`RD?Xp;^+%Id+l#CaGEL:a4Z%fH;7^^m/#nGBNlO.n])qf;c3U,qf@o)S5JFl<!1!:EJ0H1:]h!4Sfi4S\k$J=BGZ*rQ!m^q3Ke*rQ"0)fC_5l9+k?%,cn=FWUJ[Wk_?ubu3pp2t%;a9!no_]M!JueK0tH*oWqq#E[7.KU5j_5W^&!?@$_onU*lP.FnOLo+BrX=U1&7a+2cV*C)hJ#VY!p^k)"^iMBca3&*TC]X6u)8&f1pQ[0\1bkR^td]W`m)IF%^$?gquj%I6^_[^X%Hpr:ZfE(pM2;klP#OqaPKU7iB_#N:)?<VLTs*mO`WS%m]s#o>;B1MIk9u9QNNo9pZ#VSn6K)^<G]N"8(rr7iEd^:=ps(B,_foG"j?O/<%4+dKN&ROaG"TSKoGj3rpr;R_pV/Sros6kW-`Z;nqIh5p9G6IsG8U0LT&cDYFiMCW,i4j?fl[%\]TuD?Y$RQ3dd:<S5hZLAB;<XGq;b-p2^kdh6=#HC49)&Bm9GG(@aV7Xk#I%^4d$7>&O>9"M,85d6D)-eZnpr^,l#3;X;EiI5ep>i"'_;@,R4(TB>0[@lB;-MSBL*`UTSZ!X@7,D34eaQ\l69.t9cm4K6$8;=UoBERMkIZ&'N3LPe4!>BA.%Se,O-JQ/i&,[p(;EZ<>V&i>5O,eLoQA,+iSjt>t!+pG4uTS4&M(l[(_S4hhcr,TacI(#+$`/(L#fG-unFQ,@+uDTBI87*U,nkr']_(lUViGjsN2[>XuBP69ijXP2_HLUsi,((TnugBW[mT03h#Yct5L>?FZ#;U#g`t]PrUIU&BG7]PrUITbW'O]PrUITe1bg]PrUITgaI*]PrUITj</B]L[f2;+TN8-nh)6?"i8j-nh)6?"iJp0eY*B6@8`kH!s8\>5`*X$VS(Xp-3%n=OMm5!&Nbk-!f^C0OnEkdY3\^1ZjB[?-"9F@pW9cKh_\*k(P$ckThil?9$Ae:'*66Kd0me,VW_737<LU!]/tm,@0LY0OnEKdY1Et1ZjB9?0EOf@pV.EKhMOUk!`(Wcq.W]]VsuB9HfV8JpC5<WQqu^oa=Bm)JLs\9EGSoWu>\-KhMOU8uikE15/C'$VJUCZnd>/!XhWDX0aX99EGSobH&!*KhMOu8h6jI15/C'.nV=jZq_;r$*5PW5e><6@)\lhO=kVf=RddHU^N^r<]l8>;)_Fp,d?9*</nJW67.6uO.pC=bnMo>XEYFZUMcrj8RTN4W#Be7KhMOuk!_/mSg\[n=>;J/;)_Fp,d:`a<24?.O@`j!]Vn<U9HfV8MKr'Y\sYl3JJIdN)Kdii9ELcYf?NKe.e8uqAq<@%$d7gWcQk7TFGAYCVOn"A+nIrC_$+`,G"s;D&Tic9pkaYFXNgs*"P4gICm%A#.S(hp&?-"0-BYj31Iq?X=)3=[,*P<*Z,#%mb[qKU%;]ZR-WMhG,VgAc&mT9Tbrh32I#png='Q2>R7&BT7"X1.C?.F<k_tToE;s#,Gqt4M$&Je744WDX8RtRe,cK@1G0;-d.3oO*Cpbt>,VgmGs#<J6[I;3_1+aaaN.Pg)P=_i*etRAg@5O/b<NO/^GI7Ip,b6ENDB5W;+iW`rO@W3Qe`J6C*)s1b'/`2ZP!i0Ki<Pi"gM<kC-0+uG+oarT\p'C!_V"a8q5/([](u/]Ri-@mfD$)G:-[dJ5K3#^+a!Nmq!Xi!aT(6&:JkY`)n9b&mf[m`7IN-Rf7r/dnBUKNgq`eFr9cJu*;r'i%G\GOpAk,QIZ`AT(Y\B%!0;SYgci=%L>NC.1c:`hUH>jAo^.?(^#!Y!h%B/Gm=e,PlaICCB]J(+$^2&e^O:?:)\1b3R$:3Oqs^I@*59*?-L;8tLGu^$nEkqo_Z%&nG"Wbahd.;_hJAh>g.&uX(PfN0Rg8\+#1dJ_o&BAS@e8@pfUY4=LjQm^C_#6\05i.Q4?2I\_FrU-YfuEdQalSDR5YC)H/l^sDZX5Ia+J$],.o1]#Lg=[G_mCNXuS]o!XTkX^7i0<)EJpu6[)HdF?EZ\m\Xaa">CAB:"@l&?lutLWjreY5]eqbK."H[8U")ZGljM&F>['m-bt"!2cD#L!k9=*VO$0S_#/L32(s;&Hj7sS\ZN<(R6pIW!;RoJ>'t)gNM+(.>AY`DKr!'$,"r]XpspQ+6&1;K?AN81N?H2.5qbV_N^f+?U7`;H)Fu)Dnq)cZRRnaFnq)cZ)G;;Go7Dl[RS4sV3PL<EiA=H-j,5mc:EpiU(L4o+L`562]&4cmUsqr5']6fjTGldV]&4KeACZKE_7+C+\/I(PE&4JM[?/@4FU'[#87F/]0j!1^bS64B$X(\RG9A\q,h>9tF4D;P'87da65FXm*QUntM7&Ga>]g9,;b1@LA2.0AJ]ngk=:88j?PmNe/S$Sb@Ao$jON7-MTdJ>W-K>nsRTKs.N*dE:@P)+HIUT13[F12]0+9/3<]ZB=IA%q;8d@,d/sO:X0eE*:@@:4JAjnnDQa9>7"16kd=o~> | |||
endstream | |||
endobj | |||
8 0 obj | |||
<< /Type /Page | |||
/Parent 1 0 R | |||
/MediaBox [ 0 0 595 842 ] | |||
/Resources 3 0 R | |||
/Contents 7 0 R | |||
>> | |||
endobj | |||
9 0 obj | |||
<< /Length 3803 /Filter [ /ASCII85Decode /FlateDecode ] | |||
>> | |||
stream | |||
Gat=/BpTgY&cAe=0fD3@gQ_!gWbr-%H[Bq?nSK$`Y[E-$#ltYUY`6udmM]f;-7cEtQ,Vbc]Vh).W&c.ZU3c[qlIOe/ZuagNh:9DIG5(3dgY).YgLY0?P]f'"1YKFQHEqn\p30j>.YR\CFtY4iXLN]Ir1DrnmbQ^L)koHS`^WiIf?5Be+%G9[;Eh1K&"l%F-?rF[f#n^Tu<Piq`1%*JN^&j<gG]mKtEDD[b&h6^KPJT<i@OWN>k?@Hh+4AD$Eo]RpYbO:)SEAEOqh6LAd$7O5a$2!HTlfG=%nhcb*O7%&%r.gqmR*7gVm]^$s)CUZ1alMZ[>qc3i-kB8P2^rt:jYJA>InG_RqXsCe;!tH*jQIf7qZ=p`..QB^,1-3.Pa=Uoo]Uh^0A"C&adRc%*ROZaP`OC+H?;F@YClE+^Zj,H^&Jq6-Yk&TF?o:Z!TeqiNZK4fq\u1j3ofJP!PSLIPQthF4Z]81T7M%ObWq4!kl'\;gc:S^d/gr\!gHo%7XB/An%W*\O-;@53P#7TrE#Y>oZ!#g)h?dp%Ec"9SfHPdo_oe+T"GBjkQ[^S2aR8tbs7;,!.)B]jjBPcNt1CP/QV;fYj+srOPGViT%T;12"qj;1OkR<kWV?+bb-5S\rT]OF!q@9mLrRG/4ouTH\1ON7nGsj:Jj82.1%Ek;c(eG8d<`@%+R/'P(E?+MX$U*aZt6GUO$NO1/QjEW1H#7%-7./Wb5?Y"9&0-eMFCl_8?.4XDc?U"rm:YW1LPb%.sQ7Wb6K$"9&65eMFt'Jc>ZQlFC?F5l^jRous[OT`>%bH=g;8d/SSm4nC3Bkl6.2Ssbl^kjR4qLEMt(R=PJKKLZTt]Z`Wp"bOeM$Gd.p%"q_*Ggri,bf%^jMZn^Qh$UuWbREQ7+F)s16#\V9"%<t2*d]C?1Ggm!jg?0]JmbHf#.c>sW%YZcR=R1&"R6A4DJ#Qe!eL3")k7cOZp=,pn7hh*AcY!]3`pj$'nY,/"j&;tI[h.)3Lp>q/6I@k'nVjE"j&;tI[h.)q4.]2/6I.ebjm;UB#/MU<=%`5(*p4o\]cN+1Hl20=`G5XJpX*naXfF$(Yo!@87o]3^>KK75r&fXo`[9?$^+Y3W%YXk>*-s[6[ceQciR6VJO"Y"h9Z53@=^[l_%"cn$upiKIDJ%n*mP-(qh!Lq4e*<0p'#M,HT3Z@l3hKip2F>_e/-m^mGY_IW%YYLg;A3p;.":/["n7iUV>YUBb0B\7t&45dN6\lJGOj:V*1=b!VHUT8p`NN!pg;,PkK'&"P=O7..-!+#cKDd;;/p5&PuhRUU5gJ,+u[.7VNCr76l:;NRB,C(D6<D2bKEU?3hKW+dc-<K_%O_pb8dV"s'@7'7V2@Jf1Be<,1DgUd?c1FFZtXr/"AYAs<d%WL5u5$Gh\L!@ftu-W2+T;*$t=B)"c];*$t=B!0Vj_2QeC.Q):DSfkO?3^BNRe/-mg*M?:dl3hKo%T',Bo`[9HetL:DCG1'1"^tH2JAAZFL0k*mB$%W;VM5o$YC\I?<'Xjh(X(_FdMaIuclGp`JHs@L;ZT0Iie;NU+NuYW&C`"4bju1YCm/uTI)I3TSNs])Z6&Em06VaI@FiP)#Q$pAQ3tLQ;ZVFc,Jpri&8%OA#^jS-O&cg(TF(t;;\4trJhRR45iAbrLqsgZRA^/gT8kV6'nk8=!WkGa=PF2"N)Th/*@p]&"^tH3r5IVC&97IJ_Tc$\JYPI5iX3Qh;uqR(&RN/&0LJi*i$Fi%+K-F,;AH1jnVB5lS#QMk4&uLE$GpUZ!J)7Agi<Q)hMh)7*Br+jr9k]^c:.?kG=DG3?eO[h*1l3(rSY#;qo;JSIIQ1<0CI4k]36/NTp`2MgLm):o6Bm,E^GQ`_A1J:JRNpn_)V^`L5+0$F&Is8.QC'C;U\N'6T6C3GY,_S#&T_GcIgB50tsLB/7(9a##4ehcWLt!0tsdJ%,&/;r&n!Qhm:-qE;IBZ[c,HdS.t"q$;MD]QlF>US!.;dhc>hB2F+U>\k+?jopln_qVla_UKuq5HFp,lpn!)D?oPM>\aIa[0YXaK9\G)B&hSFT@%:^D5>Z<b/We^Y[.!.Q(b[C!A(_jh,jITuMI@3hA]rKB>W<6WSCTHS]*cgr4N:tG3SQ'M#/_oMm::T#M-TcZD(sb'3SfqEcqGY8]g3SGYM^B*1Gsg+F`5V2,:GNm1r2&>h&E`;L^MF:2B*I)h9aD<0a7eo8Q3'c6`tcg2Af$%)5\`!(XDFXg0eFpVp?\KF3&KBcj!uZE4XQS2&4F)"km?X$;MPbd*A>qGMY4p$7A(6k-h]pG->]hEW=":@nH.V&F*Sn']PAo1T&9iFp)rk:($OV#34qa#;RD*p"8l4D+$X8;aW#I;Gb]Q8kLh@1o)<>"ngfSU_Mi@%B7E>5s>#n.E2(aL6RIh*7UaeP#@7rBh1Zb$L6;G8L_[J25DEC"nhAcU_Mi")H)]]JpR9=Q_.neMXe-0<90jJSq!#i@_AHY'fd]Joa(2-I.$)F`q?`oPp`CJe75_g;N,fWU`q8lFbD`FDhISOL/_][T["*=dUsGL@f0(j.`,(_LPV.+)N=DJU`qBZFc*,n']Xb!<5bW3NY.P@@XOgl'mV6O0@U3d:C9u;Qt#eVD(tsj+Vfh_Ft_>Lj"D<K&Xd,&6>\CtC.Ld*MVSZJ_0Db!'qm("0@U3d6Og"c9sK&=2AhK4U`q_9mY0A&I&%o#\LD\Te-=rC%4Mf__pU:/8!>pP-ONb6S7;4RV%?E:PWUu9F2s/`I^TsMWIe#YVqA[T.E&,'Pc#THam>8A@j/@IQV6C@nsd9S5,G&]0pS)7OIt*Bo'uo`g9I-6@Z]L-Dt<H1Q'-I@<*kGJI`0"C.pb+[FW4CgMEu^e^WFZo<;[ZI'SCccYfY);<(q%j<d?,`iSD'cXLpYl`ME3AQ+)&/jG0iV_TL%X<W!arC>M,L6).d!X("u=[1dHtWsZ.eQNsSDYG2;sn7qSGZ;p7`)\#9qe`^)QX4TY/)iVY7dB?)C0r^^JjeWfJ=/0+7Z=6_$\&q>u$Elq612#_Jk=[N:Y=?8^C?>HX9/-dW7_^]qjmM<d?sNT1dB<s`\bl1\(kl%d?^\I1g7JUoF59VH$Elq613R6:7Ba?<U[W$j/!F%8?[Egfd*XR,(kl%d?Q$S`g8S.[MG\UUqN^k,X7*df3E(mRX3n,0?s2mMO1\!/hI%%(Q%$^<X0LDd2&PCYat6p3`5Z\A73Tb8QWpQN2:gDsXsaGK@WRH-`3HT%>#>RrOlmYKl)0:lO\P*I)=>T$/FmN'-EhZf25qs6Zo>Jc9d2ZKca:eEhJ#^L$!DPC7!AP8C6M`3esb)%o([:Oj.pE'g%igj9j[@%CJmsLb1e2IoB0/D]]/&(Un3\@S=;oir^L[e=1mFZe._DoH^p17,!1;,[E0q*ETo,qlJK'BAEU/42L38GY$!n3.rUWmcC^28n]DYRZ[,06GhYW0rpFTd=1mgeeRPoU2MitQNIL!DY$%;\.rUWm6Ib4#^@7TA$+07]M(D&SIcWYp=e/A=Dj/7/eEBuJp6sM<V=HO$/8X/S<aLp0Ap$G>]M0RXRl?"c=!Y)^A,kET2Miu$h@Q9'AKmU*p?uZmk(tX*h@N^oOiZ[FrHlH:,dOY"6WeV&,+C[fD`M1N'3Wu#+fr=#Oj+pDpP-.KA7>(aYk!Z>2L"NFRr`H[=kLA1XLoa>boQ\*>Y/I7o7jL?MF;X8]a*:[(,g*r.^)BR(YsGB9k7](VQTKI7!?tk#?`8*]W"!_MF;X8]a!4Z[WtYm@MOadU3d3TM/;dLmeg?H94Sjp/$M`YooAJ2lIPt9%SlFX~> | |||
endstream | |||
endobj | |||
10 0 obj | |||
<< /Type /Page | |||
/Parent 1 0 R | |||
/MediaBox [ 0 0 595 842 ] | |||
/Resources 3 0 R | |||
/Contents 9 0 R | |||
>> | |||
endobj | |||
11 0 obj | |||
<< /Length 3625 /Filter [ /ASCII85Decode /FlateDecode ] | |||
>> | |||
stream | |||
Gat=pl'!AO&]MNR?dW8Ah#PVEWCj1r\[H]o!-@0DJ8h!q!>kkWF(9:im::-ZV))$pbtDN\D8a(oQWhOZ:F5](rlJr"nIVTP*U\FKA3.Bt,T\</(CtWqCFP$BQ`t?"E<!c5mAHS'jeGf8m2O@]YGSnZh`Q>cg#8L>rL7GbR:UPuQr7%f``GA"MrkOnAsl"=ML"An:6X*#._o:eW*(n)KJR,*(SgLXJ2tX]-cM$^VUTi#0[gg"WgLoQPT!&B)/E>e`QW4se9D!JV\2m,bh:7*)E3^5b;P,e<QrG*<#W4GF%p(I'XP<;;WA6peeiF*bj&e4NNWH.AICrXTecGa<bd!a@*YRMl;63i9W@PVJ=0&tFWGerXg^p_9n8YoYj+8kF>Kc5[fC$a+mM,\!b]s=7\fKjJ2tTQkW3hGAkJ'O4O.3_/Sr!.\bi;Qpb'?-mA0'0]72;imfCX16;_kR]DJMSpccJuQ8#:!Phl::C&@s=c8fFsLU+OA.ZGM[R'A1_'=P]/Rprob1TBn7"PUAi"Wgs(8rZ%Yd)LelnF/24CA\s#=s(0m*RK-&\5M??#h0ctjTl[<'Xs0edJ,3n[8(O`!P=%"f9[4KC&AEk2HFX65YGn3rXM140=KZO*bBh!V=>'!g6f-VoffA'p]uF/DJXl0$:CZ0`sC2KZ+@_/AR@2bj.?UanRDsn;]$uAre3TV6aeu*l#e1ANIN2"`fVjW;dlWSp^[FC/D1)/'cp\\nQuFQGd?>s1.pSkjp5p1?WPsA7VNDm+l(),'fZRW=)&:*,M^;2'fZ^[=)&:j7_"FJ.r]B9Y1+T^JoD[$<npD>Bb7`^\<KKF<c*Q23QKcU[8WYdj36;uXf_(P1KS<&G;RUhD%,/+O#(jR#'$>VDYD@V\A'h$C(Riugh-S&Kj-Z\V8at)$/mdhBIhm"R4C.N40"LgD9U`A2u4MtqnH$]\>)*qF5+C8(%1`V=(r4i<%"*g=L])`pGlRS#c%ZEOnIJ?\/"H,b`s*b7FlBmjAreTo/KAPiZd]tol;Rq7rd[_pF)71EKTqKg:7ZQdec(')Q0*ep"MO=%JDg+Po@S0eo,?h2V@1H=)&9_>/-'#gL-Yk>ik9l6Ip)@lS`tee\3X`AGnF#0)EUkqmr;Zp"T8QpjYE0noZr9laQD,EHD!dmH^]k+l()hD=7D(I9k-nop_<)(>KMq)tR%`pRimS=pVV-F[u4PRB(aAKq>dDF[t)&0N\._3iZ9*D1(.Op)EV1L/Jst=%Dq@\W*dS_L@-Jg=OkP]jbm>lgSc,H+IkqC0t%4onp;>Y<0UMK=T^fePX$6\ZN%s_L>u:BB/=CW*V41pq"*1(@M'4DX6W:cp'><pq"*1`pp]GW7CaU1s@Dm285*B([f'9]ZSj&ToWcfnTFK:pq3@$T^H<;>oMikjr.Ss>Xs4>H"AjhMpt>alY)es?cV3.HsIZQ,N]nO8'gM"=4__oHsIZY1GIGU3oW3sd<1uPIbf[Y,O=ZO$g351odVlsFi3"Z>iY.+lf^j*EAm]:'@I\uY9U3Fs'E^um+4tQ]X#83\9L6LY$\MB2r$o4Y46YANaNs@Y9UA\2pB%\bqW0tYARe+c<R>7>kS'@qJZ)ZaCLFaFh.Fl>9A@amYC8G55;M:^RDVGAed'Bri!B`(-V]<@MD!0&8NT8/;TiD1*B2C<rc^':FLia-WUY3;W4q^ENV?#F>bfX7&9kpF4-r";aL^WWGm.j+NYj?l/t.YA:TmOVe6!MU<b6iI&B7nKHpY<'u'/s0s<G[C#V4NlX=7^7cB7*Z)3VYIIEQ8r\H$X!"bKsNI.Q455[j8aXFe+&Eab%W&hVE4oM@T'LlAP-`.fVW&hV%4ThEX)#9)\)!M]kWma&Z1E];D;5_)?doO@3W_R_=<i%M@'K_H:MmVWWdpNDKWA&@N40d-['LaC]CUm=[p%+`aS@=4Vd9Xq\_C0]r6jaBmW&_C%3sJ*P0ZnQ#0u^ARRZlR`6Rf):Ob1;(hq?gJPf!,R0lE-OOW\g@GJC:1"i+?]>/Db)Nk8LEKf9!@Thd(PNk8LEKeEJF\V)GJ:+)J@Lf33T!7BHbm-]p,!Ot6YL0SS#Ap8`($Gb2S89)(qRaX?_1jDKhnFkn\Q#`ED3PDabrNB'*]^n+d`_](>=kl@o"b&YnmADmZd$aG/Q^m[3%9eWm@s%:5TdK(:'WsL[o1s'X)P^g3$oN$[T^_S^W72ZTK4h,S49U@RcPa<+UG4e8cVP:$#R\m^L.[HQ8U,uYfL&KF!qGbPNLq=i'7:&mYF+qJXiY78cJS(eRsh13*;8XoP:DR>!ITWjpd7m1W\[Uh+K+18![9&ZSJ`n7hEmk^";)?VcO?'WpB]:0+G.H?R\<X>7gRU4+bIQXR\<VhFJEZ-g,)2ofLPC,V(oP*aA<P+#RXdML.[Gt,#FJ[VL3J=)5Zjr"DVBX6/d@;:oWt;!]A)UT^Hs&1u:Tm-6*WI]hXj4Y7RYS7g*t<;l0#"!,<_k6/Cj+Bcoq8D+Z"NH^uXGh]bl1PR-P\Vb.'%M.Eq*5oga5$C)OE6_GbY&_(5T=#+;Uj7`i/,US+(/Edfu2;Uir-8Z=ai<E@eT17iO!7^'V@QM`kj[#^GE]_<0-UKkqi5P=\M%9j4rJ4GEQ=u`G&pQSaeV'hjNqtQ`^+5qbl/kTt;]`XkB!-Pl'I-j(Qn(%MM]=TjhAaE>Vl6pfC/PacOe\2dgS9S>Z/Xr3)F$]apAIk,2ffk:hB:q=q$Q9<QUnB*??a2M)Q0qbPIYt('RT"cqcos`>i\"[o0TF'Nc`(%)T5(iF#L4e@dgttJ1EL5Mk&t;\Z1..Fhj7\`'kHFNE.LfQL2>0RqQr=D]7T'FHtjF@m47WL=/'CN6GoRY__V4cPNb4+>,FAD8md&@m481;M2L#I'tbf\;pB4j[p!A,2]Ru>/YR-k:9VK&/Ub\2Jf3H\a-'>pbW%0@>gfH@\knVWBagna]l]+(Fu?P)$"FC(.$as:hbG=h/)-rY.NL?NR9Bs1"8TDK#0O/Ti)!*Y$t<GESXqrBn4ftD"&W$SG&>NNe(WjO_j_8/tBWK2P`/nO$HG5+t+F'c4>9YT2llg>nn$fB]ZiXQ'=8iiD&6+DGI277T=SkOqOr.OSb`g-@o#!6^dQ<_!A$k/eKkj-EskoFcj3qJO,(HRfo%'Q_"FeS\TuH2484n=R'0U*cQ6'K+<l!#qYa%*tPmH"Q/uP/9>Y69>*u""0Mr=d.>s&7S_=T<?Z1+WI<qf+Y;U@5L,UWRWhq"6_H>gV&(cJ98BY_f_B%tF);!%]jIH!&$er<\KHg/8RNE#<m4g6^iD^f<Kk3RIO:>j.Y6^?07P\--Eu;&KtY<udKuutga7S(0-&cjNi,HV1NJ,A8RSC)kESeMPYVjn9jjgl9.'hE8mo$#&?\`8V>#lm"0P7(Bn=!*S%qYb(In[7WBjeQq_]P`Y4QUh4?TgQIH1"A9l&m[&4TpFI,;`Q)3%.(QLA(J_h\\)k+-:.f^OVSF%m.V>Ar>G6#$5uJXRQJ:rfBC6<+Lgco"Oe_hdXBpfFW@@0sNBBlb,2iV^`$S\p1HbJ[YL_hdV\6s$P@+>0sUC_S+s].'*q2LJT4F%m>nXCD]FYU55Nhl_fF7"o!8lml.0&9Vms\+`\t#E)-F\G~> | |||
endstream | |||
endobj | |||
12 0 obj | |||
<< /Type /Page | |||
/Parent 1 0 R | |||
/MediaBox [ 0 0 595 842 ] | |||
/Resources 3 0 R | |||
/Contents 11 0 R | |||
>> | |||
endobj | |||
13 0 obj | |||
<< /Length 1495 /Filter [ /ASCII85Decode /FlateDecode ] | |||
>> | |||
stream | |||
Gat%e6#YO:&4Z-f'`nFNG*'!T7j=r);VSgQ,.A\Q*a85ECc>(H)@>c+9oufu4l[f^3$X(O#[b5&oKA>r%%k$GqigJlY&i1HDZA_7G/'ZZcLR%^U,=BQ0#lc#0m<H[m[)C@*kVlMn'AR`I8#%-l/T,<f5CW\/q\2c*8m>CdA_d(b8%&cB&YK_)\unqBH]F-n,X[*I"tZ40:U!a-N"5_4l;qbM!_NP-N")[*LSW7`:J^<HBZ!6R#(+\Tj^W,lkel>D1.Wm@IaGM-GE8W5[?1Q9OOe$THT_f$L#hF/JG8fi]nh"$ZQhaQ]Obr@J0\cpa5q@h).I"$!&?G4sCNePDM^9Z>T:gf(85tPqi(u!*G^a/GbI)&RS*c[`g`23cc/62G#TlLFP&3!%)>K/""i1/2NjtbWmLC_8H^nAsO<=JCu:`HGL$7bVJ3kJ4Y-L:,)3qR@.X+Nr[WT1F0e1c-.s'=bZ+WE3CTj\qGFDGL7[6)6XXN1'NEL'q1h-`XMuLZG9;H6o23op^)L$?XP9eUD[6Ig`fRk$k2NmTk24_!32<8Tl=Y3Td&MK!`dCY:q/AnBUSAlJLY5=.,5as[*1KP:h:(EKptGaQ5T-'W3QV^Nm5p+iu\E(XarCTbs>l&7A)/DfJGMlOhn%qZd5&Op4c:_eVK/K&a2h,2U,5H1B'b9arJ(e%5T!Tk.osq&[&DEju*W+XR1Sp[jKmuWsljLC*.A^_(3YQ>\+MkD:ijFg*1d5CKu=r]2p7?Y8!3om^'T_N/%[<M$-2lEMtf[WJl[]m0t:]PtNeI4p\[YY$?Q+GsJl3-^_M_*cII_M[JGnU[[-XQC&bs4GN@5(W`#FV1Q8&Mb9R/&CoKTjsmQB0"fqNXuM@_6Ae=7"`rW32fm0$M/9:cB!/EIju1hR4I%#o4^TKPb_6Q:1KPPi&Cdeg@sCeR+m4+d-PI.[<Kb0tpb6XS)C"3k!3-LGF2bTu<Fl#X5a>b3[(1WR#&h)+E4'6G5FT,\1*Y."<g)DDm&ZVU,Qh2i/'7:SGo^\BJEC!-#&dkn>U:7F/e.QI<p\6MhKO<.RXS3R'+M?5Q+>$nQj`Ap]tN0M<h;%qelCi^cX?1DKhG!a"q@t_Q+>$nG%h35;/`6";0rKVd.:8/_-FL1108eA:m:R?X$)*GYcQ/UjV^G1X"mb%#'43UcWo]P6d8so=*Y!kiP(GbdPHWHB4S19%-GET,BK\o<58CQ>lF=cg;,FnRB&FPRV1_"b_?!QF+n7'oqaTgQ"_oghL@=_*+r+@$_NifAV7Ot^Wp)H_-Ed3C>WDOm&tK&PeKH6rASe_D_N"$f?=uD5ul7Q>icpKKh_-eIRMmKW-YD)\]QjugT^^,i<nJ8M"F:+)pE0QIm;2an-t8LI_EDVb;V3TfULC&c^-bDFa[MV\$(jJ5Hauhrc!+-F`V\MF1f&Smm`'YB4qe0^:eg">W\K/^]/I>/0EO>qa\iMQcF<n#B.pAVmFE4MRRYdDYGM#!>>4h*r~> | |||
endstream | |||
endobj | |||
14 0 obj | |||
<< /Type /Page | |||
/Parent 1 0 R | |||
/MediaBox [ 0 0 595 842 ] | |||
/Resources 3 0 R | |||
/Contents 13 0 R | |||
>> | |||
endobj | |||
15 0 obj | |||
<< /Type /Font | |||
/Subtype /Type1 | |||
/Name /F14 | |||
/BaseFont /ZapfDingbats >> | |||
endobj | |||
16 0 obj | |||
<< /Type /Font | |||
/Subtype /Type1 | |||
/Name /F5 | |||
/BaseFont /Times-Roman | |||
/Encoding /WinAnsiEncoding >> | |||
endobj | |||
17 0 obj | |||
<< /Type /Font | |||
/Subtype /Type1 | |||
/Name /F13 | |||
/BaseFont /Symbol >> | |||
endobj | |||
18 0 obj | |||
<< /Type /Font | |||
/Subtype /Type1 | |||
/Name /F1 | |||
/BaseFont /Helvetica | |||
/Encoding /WinAnsiEncoding >> | |||
endobj | |||
19 0 obj | |||
<< /Type /Font | |||
/Subtype /Type1 | |||
/Name /F9 | |||
/BaseFont /Courier | |||
/Encoding /WinAnsiEncoding >> | |||
endobj | |||
1 0 obj | |||
<< /Type /Pages | |||
/Count 5 | |||
/Kids [6 0 R 8 0 R 10 0 R 12 0 R 14 0 R ] >> | |||
endobj | |||
2 0 obj | |||
<< /Type /Catalog | |||
/Pages 1 0 R | |||
>> | |||
endobj | |||
3 0 obj | |||
<< | |||
/Font << /F5 16 0 R /F14 15 0 R /F13 17 0 R /F1 18 0 R /F9 19 0 R >> | |||
/ProcSet [ /PDF /ImageB /ImageC /Text ] >> | |||
endobj | |||
xref | |||
0 20 | |||
0000000000 65535 f | |||
0000016170 00000 n | |||
0000016255 00000 n | |||
0000016305 00000 n | |||
0000000015 00000 n | |||
0000000071 00000 n | |||
0000002919 00000 n | |||
0000003025 00000 n | |||
0000006052 00000 n | |||
0000006158 00000 n | |||
0000010053 00000 n | |||
0000010160 00000 n | |||
0000013878 00000 n | |||
0000013986 00000 n | |||
0000015574 00000 n | |||
0000015682 00000 n | |||
0000015767 00000 n | |||
0000015877 00000 n | |||
0000015956 00000 n | |||
0000016064 00000 n | |||
trailer | |||
<< | |||
/Size 20 | |||
/Root 2 0 R | |||
/Info 4 0 R | |||
>> | |||
startxref | |||
16438 | |||
%%EOF |
@@ -19,19 +19,18 @@ | |||
<fo:root font-family="Times Roman" font-size="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format"> | |||
<fo:layout-master-set> | |||
<fo:simple-page-master | |||
margin-right="1.5cm" | |||
margin-left="1.5cm" | |||
margin-bottom="2cm" | |||
margin-top="1cm" | |||
page-width="21cm" | |||
page-height="29.7cm" | |||
master-name="left"> | |||
<fo:region-before extent="0.5cm"/> | |||
<fo:region-body margin-top="0.5cm" margin-bottom="1.7cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
<fo:simple-page-master | |||
margin-right="1.5cm" | |||
margin-left="1.5cm" | |||
margin-bottom="2cm" | |||
margin-top="1cm" | |||
page-width="21cm" | |||
page-height="29.7cm" | |||
master-name="left"> | |||
<fo:region-body margin-top="0.5cm" margin-bottom="1.7cm"/> | |||
<fo:region-before extent="0.5cm"/> | |||
<fo:region-after extent="1.5cm"/> | |||
</fo:simple-page-master> | |||
</fo:layout-master-set> | |||
<fo:page-sequence id="N2528" master-reference="left"> |
@@ -58,7 +58,7 @@ | |||
recent XML/XSL-FO convert, he has been nit-picking FAQs & assorted web | |||
pages since his first webmaster position @brain.com in 1996. Most | |||
important creation? He's got a couple of cool kids.</li> | |||
<li id="jm"><link href="mailto:jeremias@apache.org">Jeremias M�rki</link> (JM) | |||
<li id="jm"><link href="mailto:jeremias@apache.org">Jeremias Märki</link> (JM) | |||
is an independent software engineer and consultant from Lucerne, Switzerland. He's also | |||
the creator of <fork href="http://barcode4j.sourceforge.net">Barcode4J</fork>. | |||
See his <fork href="http://www.jeremias-maerki.ch">home page</fork> for more information | |||
@@ -67,20 +67,25 @@ | |||
<li id="sp"><link href="mailto:spepping@apache.org">Simon Pepping</link> (SP) came to FOP | |||
from the TeX/LaTeX world. See his <fork href="http://www.leverkruid.eu">home | |||
page</fork> for some of his private projects.</li> | |||
<li id="jp"><link href="mailto:pietsch@apache.org">J�rg Pietschmann</link> (JP)</li> | |||
<li id="jp"><link href="mailto:pietsch@apache.org">Jörg Pietschmann</link> (JP)</li> | |||
<li id="ps"><link href="mailto:tcho@club-internet.fr">Pascal Sancho</link> (PS) | |||
is an XML developper from Aix-en-Provence (France). He works on software solutions for | |||
rendering various kind of documents on various supports, more specifically taking care | |||
of PDF generation with FOP.</li> | |||
is an XML developper from Aix-en-Provence (France). He works on software solutions for | |||
rendering various kind of documents on various supports, more specifically taking care | |||
of PDF generation with FOP.</li> | |||
</ul> | |||
</section> | |||
<section id="contribute-active"> | |||
<title>Active Contributors</title> | |||
<ul> | |||
<li id="ag">Alexios Giotis holds a Ph.D. in the optimization of turbomachinery cascades | |||
using evolutionary algorithms, neural networks and parallel processing. He is one of | |||
the founding members of i-docs (software for enterprises) and he has been leading its | |||
technical design & implementation based on open source libraries since its inception. | |||
He is relying on Apache FOP for generating high volumes of documents on major banks and | |||
telecom operators since FOP's 1.0 release. He lives in Athens, Greece.</li> | |||
<li id="gd">Georg Datterl is a software developer from Austria, currently working for | |||
Geneon media solutions gmbh in Nuremberg, Germany. He needs FOP to wrestle gigabytes of | |||
electronic data into thousands of printed pages.</li> | |||
<li id="lm">Louis Masters</li> | |||
<li id="lb">Luis Bernardo</li> | |||
</ul> | |||
</section> |
@@ -27,6 +27,8 @@ import java.io.Serializable; | |||
*/ | |||
public class FontTriplet implements Comparable<FontTriplet>, Serializable { | |||
public static final FontTriplet DEFAULT_FONT_TRIPLET = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL); | |||
/** serial version UID */ | |||
private static final long serialVersionUID = 1168991106658033508L; | |||
@@ -135,6 +137,5 @@ public class FontTriplet implements Comparable<FontTriplet>, Serializable { | |||
*/ | |||
boolean matches(FontTriplet triplet); | |||
} | |||
} | |||
@@ -108,7 +108,7 @@ public abstract class PrintRenderer extends AbstractRenderer { | |||
String key = fontInfo.getInternalFontKey(triplet); | |||
if (key == null) { | |||
//Find a default fallback font as last resort | |||
triplet = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL); | |||
triplet = FontTriplet.DEFAULT_FONT_TRIPLET; | |||
key = fontInfo.getInternalFontKey(triplet); | |||
} | |||
return key; |
@@ -61,8 +61,8 @@ import org.apache.fop.render.intermediate.IFException; | |||
import org.apache.fop.render.intermediate.IFPainter; | |||
/** | |||
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation that | |||
* produces AFP (MO:DCA). | |||
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation that produces AFP | |||
* (MO:DCA). | |||
*/ | |||
public class AFPDocumentHandler extends AbstractBinaryWritingIFDocumentHandler | |||
implements AFPCustomizable { |
@@ -30,7 +30,13 @@ import java.net.URI; | |||
import java.net.URISyntaxException; | |||
import java.util.Map; | |||
import org.w3c.dom.Document; | |||
import org.apache.xmlgraphics.image.loader.ImageProcessingHints; | |||
import org.apache.xmlgraphics.image.loader.ImageSessionContext; | |||
import org.apache.fop.afp.AFPBorderPainter; | |||
import org.apache.fop.afp.AFPEventProducer; | |||
import org.apache.fop.afp.AFPPaintingState; | |||
import org.apache.fop.afp.AFPUnitConverter; | |||
import org.apache.fop.afp.AbstractAFPPainter; | |||
@@ -47,27 +53,22 @@ import org.apache.fop.afp.ptoca.PtocaBuilder; | |||
import org.apache.fop.afp.ptoca.PtocaProducer; | |||
import org.apache.fop.afp.util.AFPResourceAccessor; | |||
import org.apache.fop.fonts.Font; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.fonts.FontTriplet; | |||
import org.apache.fop.fonts.Typeface; | |||
import org.apache.fop.render.RenderingContext; | |||
import org.apache.fop.render.intermediate.AbstractIFPainter; | |||
import org.apache.fop.render.intermediate.BorderPainter; | |||
import org.apache.fop.render.intermediate.IFContext; | |||
import org.apache.fop.render.intermediate.IFException; | |||
import org.apache.fop.render.intermediate.IFState; | |||
import org.apache.fop.render.intermediate.IFUtil; | |||
import org.apache.fop.traits.BorderProps; | |||
import org.apache.fop.traits.RuleStyle; | |||
import org.apache.fop.util.CharUtilities; | |||
import org.apache.xmlgraphics.image.loader.ImageProcessingHints; | |||
import org.apache.xmlgraphics.image.loader.ImageSessionContext; | |||
import org.w3c.dom.Document; | |||
/** | |||
* IFPainter implementation that produces AFP (MO:DCA). | |||
*/ | |||
public class AFPPainter extends AbstractIFPainter { | |||
public class AFPPainter extends AbstractIFPainter<AFPDocumentHandler> { | |||
//** logging instance */ | |||
//private static Log log = LogFactory.getLog(AFPPainter.class); | |||
@@ -75,8 +76,6 @@ public class AFPPainter extends AbstractIFPainter { | |||
private static final int X = 0; | |||
private static final int Y = 1; | |||
private final AFPDocumentHandler documentHandler; | |||
/** the border painter */ | |||
private final AFPBorderPainterAdapter borderPainter; | |||
/** the rectangle painter */ | |||
@@ -85,36 +84,38 @@ public class AFPPainter extends AbstractIFPainter { | |||
/** unit converter */ | |||
private final AFPUnitConverter unitConv; | |||
private final AFPEventProducer eventProducer; | |||
/** | |||
* Default constructor. | |||
* @param documentHandler the parent document handler | |||
*/ | |||
public AFPPainter(AFPDocumentHandler documentHandler) { | |||
super(); | |||
this.documentHandler = documentHandler; | |||
super(documentHandler); | |||
this.state = IFState.create(); | |||
this.borderPainter = new AFPBorderPainterAdapter( | |||
new AFPBorderPainter(getPaintingState(), getDataStream())); | |||
this.rectanglePainter = documentHandler.createRectanglePainter(); | |||
this.unitConv = getPaintingState().getUnitConverter(); | |||
this.eventProducer = AFPEventProducer.Provider.get(getUserAgent().getEventBroadcaster()); | |||
} | |||
/** {@inheritDoc} */ | |||
@Override | |||
protected IFContext getContext() { | |||
return this.documentHandler.getContext(); | |||
} | |||
FontInfo getFontInfo() { | |||
return this.documentHandler.getFontInfo(); | |||
private AFPPaintingState getPaintingState() { | |||
return getDocumentHandler().getPaintingState(); | |||
} | |||
AFPPaintingState getPaintingState() { | |||
return this.documentHandler.getPaintingState(); | |||
private DataStream getDataStream() { | |||
return getDocumentHandler().getDataStream(); | |||
} | |||
DataStream getDataStream() { | |||
return this.documentHandler.getDataStream(); | |||
@Override | |||
public String getFontKey(FontTriplet triplet) throws IFException { | |||
try { | |||
return super.getFontKey(triplet); | |||
} catch (IFException e) { | |||
eventProducer.invalidConfiguration(null, e); | |||
return super.getFontKey(FontTriplet.DEFAULT_FONT_TRIPLET); | |||
} | |||
} | |||
/** {@inheritDoc} */ | |||
@@ -180,7 +181,7 @@ public class AFPPainter extends AbstractIFPainter { | |||
protected RenderingContext createRenderingContext() { | |||
AFPRenderingContext psContext = new AFPRenderingContext( | |||
getUserAgent(), | |||
documentHandler.getResourceManager(), | |||
getDocumentHandler().getResourceManager(), | |||
getPaintingState(), | |||
getFontInfo(), | |||
getContext().getForeignAttributes()); | |||
@@ -189,7 +190,7 @@ public class AFPPainter extends AbstractIFPainter { | |||
/** {@inheritDoc} */ | |||
public void drawImage(String uri, Rectangle rect) throws IFException { | |||
PageSegmentDescriptor pageSegment = documentHandler.getPageSegmentNameFor(uri); | |||
PageSegmentDescriptor pageSegment = getDocumentHandler().getPageSegmentNameFor(uri); | |||
if (pageSegment != null) { | |||
float[] srcPts = {rect.x, rect.y}; | |||
@@ -203,10 +204,10 @@ public class AFPPainter extends AbstractIFPainter { | |||
//Do we need to embed an external page segment? | |||
if (pageSegment.getURI() != null) { | |||
AFPResourceAccessor accessor = new AFPResourceAccessor( | |||
documentHandler.getUserAgent().getResourceResolver()); | |||
getDocumentHandler().getUserAgent().getResourceResolver()); | |||
try { | |||
URI resourceUri = new URI(pageSegment.getURI()); | |||
documentHandler.getResourceManager().createIncludedResourceFromExternal( | |||
getDocumentHandler().getResourceManager().createIncludedResourceFromExternal( | |||
pageSegment.getName(), resourceUri, accessor); | |||
} catch (URISyntaxException urie) { | |||
@@ -362,14 +363,10 @@ public class AFPPainter extends AbstractIFPainter { | |||
FontTriplet triplet = new FontTriplet( | |||
state.getFontFamily(), state.getFontStyle(), state.getFontWeight()); | |||
//TODO Ignored: state.getFontVariant() | |||
String fontKey = getFontInfo().getInternalFontKey(triplet); | |||
if (fontKey == null) { | |||
triplet = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL); | |||
fontKey = getFontInfo().getInternalFontKey(triplet); | |||
} | |||
String fontKey = getFontKey(triplet); | |||
// register font as necessary | |||
Map<String, Typeface> fontMetricMap = documentHandler.getFontInfo().getFonts(); | |||
Map<String, Typeface> fontMetricMap = getFontInfo().getFonts(); | |||
final AFPFont afpFont = (AFPFont)fontMetricMap.get(fontKey); | |||
final Font font = getFontInfo().getFontInstance(triplet, fontSize); | |||
AFPPageFonts pageFonts = getPaintingState().getPageFonts(); | |||
@@ -383,7 +380,7 @@ public class AFPPainter extends AbstractIFPainter { | |||
if (afpFont.isEmbeddable()) { | |||
try { | |||
documentHandler.getResourceManager().embedFont(afpFont, charSet); | |||
getDocumentHandler().getResourceManager().embedFont(afpFont, charSet); | |||
} catch (IOException ioe) { | |||
throw new IFException("Error while embedding font resources", ioe); | |||
} |
@@ -46,6 +46,8 @@ import org.apache.xmlgraphics.image.loader.util.ImageUtil; | |||
import org.apache.fop.ResourceEventProducer; | |||
import org.apache.fop.apps.FOUserAgent; | |||
import org.apache.fop.fo.Constants; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.fonts.FontTriplet; | |||
import org.apache.fop.render.ImageHandler; | |||
import org.apache.fop.render.ImageHandlerRegistry; | |||
import org.apache.fop.render.ImageHandlerUtil; | |||
@@ -56,7 +58,7 @@ import org.apache.fop.traits.RuleStyle; | |||
/** | |||
* Abstract base class for IFPainter implementations. | |||
*/ | |||
public abstract class AbstractIFPainter implements IFPainter { | |||
public abstract class AbstractIFPainter<T extends IFDocumentHandler> implements IFPainter { | |||
/** logging instance */ | |||
private static Log log = LogFactory.getLog(AbstractIFPainter.class); | |||
@@ -67,18 +69,39 @@ public abstract class AbstractIFPainter implements IFPainter { | |||
/** Holds the intermediate format state */ | |||
protected IFState state; | |||
private final T documentHandler; | |||
/** | |||
* Default constructor. | |||
*/ | |||
public AbstractIFPainter() { | |||
public AbstractIFPainter(T documentHandler) { | |||
this.documentHandler = documentHandler; | |||
} | |||
protected String getFontKey(FontTriplet triplet) throws IFException { | |||
String key = getFontInfo().getInternalFontKey(triplet); | |||
if (key == null) { | |||
throw new IFException("The font triplet is not available: \"" + triplet + "\" " | |||
+ "for the MIME type: \"" + documentHandler.getMimeType() + "\""); | |||
} | |||
return key; | |||
} | |||
/** | |||
* Returns the intermediate format context object. | |||
* @return the context object | |||
*/ | |||
protected abstract IFContext getContext(); | |||
protected IFContext getContext() { | |||
return documentHandler.getContext(); | |||
} | |||
protected FontInfo getFontInfo() { | |||
return documentHandler.getFontInfo(); | |||
} | |||
protected T getDocumentHandler() { | |||
return documentHandler; | |||
} | |||
/** | |||
* Returns the user agent. |
@@ -27,20 +27,27 @@ public class IFException extends Exception { | |||
private static final long serialVersionUID = 0L; | |||
/** | |||
* Constructs a new exception with the specified detail message and | |||
* cause. <p>Note that the detail message associated with | |||
* <code>cause</code> is <i>not</i> automatically incorporated in | |||
* Constructs a new exception with the specified detail message and cause. <p>Note that the | |||
* detail message associated with <code>cause</code> is <i>not</i> automatically incorporated in | |||
* this exception's detail message. | |||
* | |||
* @param message the detail message (which is saved for later retrieval | |||
* by the {@link #getMessage()} method). | |||
* @param cause the cause (which is saved for later retrieval by the | |||
* {@link #getCause()} method). (A <code>null</code> value is | |||
* permitted, and indicates that the cause is nonexistent or | |||
* unknown.) | |||
* @param message the detail message (which is saved for later retrieval by the | |||
* {@link #getMessage()} method). | |||
* @param cause the cause (which is saved for later retrieval by the {@link #getCause()} | |||
* method). (A <code>null</code> value is permitted, and indicates that the cause is | |||
* nonexistent or unknown.) | |||
*/ | |||
public IFException(String message, Exception cause) { | |||
super(message, cause); | |||
} | |||
/** | |||
* Constructs a new exception with the specified detail message. | |||
* | |||
* @param message the detail message (which is saved for later retrieval by the | |||
* {@link #getMessage()} method). | |||
*/ | |||
public IFException(String message) { | |||
super(message); | |||
} | |||
} |
@@ -0,0 +1,156 @@ | |||
/* | |||
* 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. | |||
*/ | |||
package org.apache.fop.render.java2d; | |||
import java.awt.Dimension; | |||
import java.util.Locale; | |||
import javax.xml.transform.Result; | |||
import org.apache.fop.accessibility.StructureTreeEventHandler; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.render.intermediate.IFContext; | |||
import org.apache.fop.render.intermediate.IFDocumentHandler; | |||
import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator; | |||
import org.apache.fop.render.intermediate.IFDocumentNavigationHandler; | |||
import org.apache.fop.render.intermediate.IFException; | |||
import org.apache.fop.render.intermediate.IFPainter; | |||
/** | |||
* {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation that produces | |||
* Graphics2D instance. | |||
*/ | |||
public class Java2DDocumentHandler implements IFDocumentHandler { | |||
public void setContext(IFContext context) { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public IFContext getContext() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void setResult(Result result) throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void setFontInfo(FontInfo fontInfo) { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public FontInfo getFontInfo() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void setDefaultFontInfo(FontInfo fontInfo) { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public IFDocumentHandlerConfigurator getConfigurator() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public StructureTreeEventHandler getStructureTreeEventHandler() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public IFDocumentNavigationHandler getDocumentNavigationHandler() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public boolean supportsPagesOutOfOrder() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public String getMimeType() { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void startDocument() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void endDocument() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void setDocumentLocale(Locale locale) { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void startDocumentHeader() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void endDocumentHeader() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void startDocumentTrailer() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void endDocumentTrailer() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void startPageSequence(String id) throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void endPageSequence() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void startPage(int index, String name, String pageMasterName, Dimension size) | |||
throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void endPage() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void startPageHeader() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void endPageHeader() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public IFPainter startPageContent() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void endPageContent() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void startPageTrailer() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void endPageTrailer() throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
public void handleExtensionObject(Object extension) throws IFException { | |||
throw new UnsupportedOperationException(); | |||
} | |||
} |
@@ -47,10 +47,10 @@ import org.apache.fop.traits.RuleStyle; | |||
import org.apache.fop.util.CharUtilities; | |||
/** | |||
* {@link org.apache.fop.render.intermediate.IFPainter} implementation | |||
* that paints on a Graphics2D instance. | |||
* {@link org.apache.fop.render.intermediate.IFPainter} implementation that paints on a Graphics2D | |||
* instance. | |||
*/ | |||
public class Java2DPainter extends AbstractIFPainter { | |||
public class Java2DPainter extends AbstractIFPainter<Java2DDocumentHandler> { | |||
/** the IF context */ | |||
protected IFContext ifContext; | |||
@@ -62,7 +62,7 @@ public class Java2DPainter extends AbstractIFPainter { | |||
/** The current state, holds a Graphics2D and its context */ | |||
protected Java2DGraphicsState g2dState; | |||
private Stack g2dStateStack = new Stack(); | |||
private Stack<Java2DGraphicsState> g2dStateStack = new Stack<Java2DGraphicsState>(); | |||
/** | |||
* Main constructor. | |||
@@ -83,7 +83,7 @@ public class Java2DPainter extends AbstractIFPainter { | |||
* @param state the IF state object | |||
*/ | |||
public Java2DPainter(Graphics2D g2d, IFContext context, FontInfo fontInfo, IFState state) { | |||
super(); | |||
super(new Java2DDocumentHandler()); | |||
this.ifContext = context; | |||
if (state != null) { | |||
this.state = state.push(); | |||
@@ -256,7 +256,7 @@ public class Java2DPainter extends AbstractIFPainter { | |||
/** Restores the last graphics state from the stack. */ | |||
protected void restoreGraphicsState() { | |||
g2dState.dispose(); | |||
g2dState = (Java2DGraphicsState)g2dStateStack.pop(); | |||
g2dState = g2dStateStack.pop(); | |||
} | |||
private void concatenateTransformationMatrix(AffineTransform transform) throws IOException { |
@@ -47,7 +47,6 @@ import org.apache.fop.fonts.FontTriplet; | |||
import org.apache.fop.render.ImageHandlerUtil; | |||
import org.apache.fop.render.RenderingContext; | |||
import org.apache.fop.render.intermediate.AbstractIFPainter; | |||
import org.apache.fop.render.intermediate.IFContext; | |||
import org.apache.fop.render.intermediate.IFException; | |||
import org.apache.fop.render.intermediate.IFState; | |||
import org.apache.fop.render.intermediate.IFUtil; | |||
@@ -58,15 +57,12 @@ import org.apache.fop.traits.RuleStyle; | |||
import org.apache.fop.util.CharUtilities; | |||
/** | |||
* {@link org.apache.fop.render.intermediate.IFPainter} implementation | |||
* that produces PCL 5. | |||
* {@link org.apache.fop.render.intermediate.IFPainter} implementation that produces PCL 5. | |||
*/ | |||
public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
public class PCLPainter extends AbstractIFPainter<PCLDocumentHandler> implements PCLConstants { | |||
private static final boolean DEBUG = false; | |||
private PCLDocumentHandler parent; | |||
/** The PCL generator */ | |||
private PCLGenerator gen; | |||
@@ -74,7 +70,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
private int currentPrintDirection = 0; | |||
//private GeneralPath currentPath = null; | |||
private Stack graphicContextStack = new Stack(); | |||
private Stack<GraphicContext> graphicContextStack = new Stack<GraphicContext>(); | |||
private GraphicContext graphicContext = new GraphicContext(); | |||
/** | |||
@@ -83,24 +79,19 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
* @param pageDefinition the page definition describing the page to be rendered | |||
*/ | |||
public PCLPainter(PCLDocumentHandler parent, PCLPageDefinition pageDefinition) { | |||
this.parent = parent; | |||
super(parent); | |||
this.gen = parent.getPCLGenerator(); | |||
this.state = IFState.create(); | |||
this.currentPageDefinition = pageDefinition; | |||
} | |||
/** {@inheritDoc} */ | |||
public IFContext getContext() { | |||
return this.parent.getContext(); | |||
} | |||
PCLRenderingUtil getPCLUtil() { | |||
return this.parent.getPCLUtil(); | |||
return getDocumentHandler().getPCLUtil(); | |||
} | |||
/** @return the target resolution */ | |||
protected int getResolution() { | |||
int resolution = (int)Math.round(getUserAgent().getTargetResolution()); | |||
int resolution = Math.round(getUserAgent().getTargetResolution()); | |||
if (resolution <= 300) { | |||
return 300; | |||
} else { | |||
@@ -223,7 +214,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
g2d.translate(-rect.x, -rect.y); | |||
Java2DPainter painter = new Java2DPainter(g2d, | |||
getContext(), parent.getFontInfo(), state); | |||
getContext(), getFontInfo(), state); | |||
try { | |||
painter.drawBorderRect(rect, top, bottom, left, right); | |||
} catch (IFException e) { | |||
@@ -258,7 +249,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
g2d.translate(-boundingBox.x, -boundingBox.y); | |||
Java2DPainter painter = new Java2DPainter(g2d, | |||
getContext(), parent.getFontInfo(), state); | |||
getContext(), getFontInfo(), state); | |||
try { | |||
painter.drawLine(start, end, width, color, style); | |||
} catch (IFException e) { | |||
@@ -315,9 +306,8 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
state.getFontFamily(), state.getFontStyle(), state.getFontWeight()); | |||
//TODO Ignored: state.getFontVariant() | |||
//TODO Opportunity for font caching if font state is more heavily used | |||
String fontKey = parent.getFontInfo().getInternalFontKey(triplet); | |||
boolean pclFont = getPCLUtil().isAllTextAsBitmaps() | |||
? false | |||
String fontKey = getFontKey(triplet); | |||
boolean pclFont = getPCLUtil().isAllTextAsBitmaps() ? false | |||
: HardcodedFonts.setFont(gen, fontKey, state.getFontSize(), text); | |||
if (pclFont) { | |||
drawTextNative(x, y, letterSpacing, wordSpacing, dp, text, triplet); | |||
@@ -346,7 +336,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
setCursorPos(x, y); | |||
float fontSize = state.getFontSize() / 1000f; | |||
Font font = parent.getFontInfo().getFontInstance(triplet, state.getFontSize()); | |||
Font font = getFontInfo().getFontInstance(triplet, state.getFontSize()); | |||
int l = text.length(); | |||
int[] dx = IFUtil.convertDPToDX ( dp ); | |||
int dxl = (dx != null ? dx.length : 0); | |||
@@ -438,13 +428,12 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
final int letterSpacing, final int wordSpacing, final int[][] dp, | |||
final String text, FontTriplet triplet) throws IFException { | |||
//Use Java2D to paint different fonts via bitmap | |||
final Font font = parent.getFontInfo().getFontInstance(triplet, state.getFontSize()); | |||
final Font font = getFontInfo().getFontInstance(triplet, state.getFontSize()); | |||
//for cursive fonts, so the text isn't clipped | |||
FontMetricsMapper mapper; | |||
try { | |||
mapper = (FontMetricsMapper)parent.getFontInfo().getMetricsFor( | |||
font.getFontName()); | |||
mapper = (FontMetricsMapper) getFontInfo().getMetricsFor(font.getFontName()); | |||
} catch (Exception t) { | |||
throw new RuntimeException(t); | |||
} | |||
@@ -475,8 +464,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
rect = new Rectangle(x, y, 1000, -descent); | |||
g2d.draw(rect); | |||
} | |||
Java2DPainter painter = new Java2DPainter(g2d, | |||
getContext(), parent.getFontInfo(), state); | |||
Java2DPainter painter = new Java2DPainter(g2d, getContext(), getFontInfo(), state); | |||
try { | |||
painter.drawText(x, y, letterSpacing, wordSpacing, dp, text); | |||
} catch (IFException e) { | |||
@@ -501,7 +489,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { | |||
/** Restores the last graphics state from the stack. */ | |||
private void restoreGraphicsState() { | |||
graphicContext = (GraphicContext)graphicContextStack.pop(); | |||
graphicContext = graphicContextStack.pop(); | |||
} | |||
private void concatenateTransformationMatrix(AffineTransform transform) throws IOException { |
@@ -40,7 +40,6 @@ import org.apache.fop.fo.extensions.xmp.XMPMetadata; | |||
import org.apache.fop.pdf.PDFAnnotList; | |||
import org.apache.fop.pdf.PDFDocument; | |||
import org.apache.fop.pdf.PDFPage; | |||
import org.apache.fop.pdf.PDFResourceContext; | |||
import org.apache.fop.pdf.PDFResources; | |||
import org.apache.fop.render.extensions.prepress.PageBoundaries; | |||
import org.apache.fop.render.extensions.prepress.PageScale; | |||
@@ -68,31 +67,28 @@ public class PDFDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { | |||
private PDFStructureTreeBuilder structureTreeBuilder; | |||
/** the PDF Document being created */ | |||
protected PDFDocument pdfDoc; | |||
private PDFDocument pdfDoc; | |||
/** | |||
* Utility class which enables all sorts of features that are not directly connected to the | |||
* normal rendering process. | |||
*/ | |||
protected final PDFRenderingUtil pdfUtil; | |||
private final PDFRenderingUtil pdfUtil; | |||
/** the /Resources object of the PDF document being created */ | |||
protected PDFResources pdfResources; | |||
private PDFResources pdfResources; | |||
/** The current content generator */ | |||
protected PDFContentGenerator generator; | |||
/** the current annotation list to add annotations to */ | |||
protected PDFResourceContext currentContext; | |||
private PDFContentGenerator generator; | |||
/** the current page to add annotations to */ | |||
protected PDFPage currentPage; | |||
private PDFPage currentPage; | |||
/** the current page's PDF reference */ | |||
protected PageReference currentPageRef; | |||
private PageReference currentPageRef; | |||
/** Used for bookmarks/outlines. */ | |||
protected Map<Integer, PageReference> pageReferences = new HashMap<Integer, PageReference>(); | |||
private Map<Integer, PageReference> pageReferences = new HashMap<Integer, PageReference>(); | |||
private final PDFDocumentNavigationHandler documentNavigationHandler | |||
= new PDFDocumentNavigationHandler(this); | |||
@@ -133,6 +129,22 @@ public class PDFDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { | |||
return logicalStructureHandler; | |||
} | |||
PDFDocument getPDFDocument() { | |||
return pdfDoc; | |||
} | |||
PDFPage getCurrentPage() { | |||
return currentPage; | |||
} | |||
PageReference getCurrentPageRef() { | |||
return currentPageRef; | |||
} | |||
PDFContentGenerator getGenerator() { | |||
return generator; | |||
} | |||
/** {@inheritDoc} */ | |||
public void startDocument() throws IFException { | |||
super.startDocument(); | |||
@@ -171,7 +183,6 @@ public class PDFDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { | |||
pdfResources = null; | |||
this.generator = null; | |||
currentContext = null; | |||
currentPage = null; | |||
} catch (IOException ioe) { | |||
throw new IFException("I/O error in endDocument()", ioe); |
@@ -63,7 +63,7 @@ public class PDFDocumentNavigationHandler implements IFDocumentNavigationHandler | |||
} | |||
PDFDocument getPDFDoc() { | |||
return this.documentHandler.pdfDoc; | |||
return this.documentHandler.getPDFDocument(); | |||
} | |||
/** {@inheritDoc} */ | |||
@@ -100,7 +100,7 @@ public class PDFDocumentNavigationHandler implements IFDocumentNavigationHandler | |||
/** {@inheritDoc} */ | |||
public void renderLink(Link link) throws IFException { | |||
Rectangle targetRect = link.getTargetRect(); | |||
int pageHeight = documentHandler.currentPageRef.getPageDimension().height; | |||
int pageHeight = documentHandler.getCurrentPageRef().getPageDimension().height; | |||
Rectangle2D targetRect2D = new Rectangle2D.Double( | |||
targetRect.getMinX() / 1000.0, | |||
(pageHeight - targetRect.getMinY() - targetRect.getHeight()) / 1000.0, | |||
@@ -116,7 +116,7 @@ public class PDFDocumentNavigationHandler implements IFDocumentNavigationHandler | |||
if (documentHandler.getUserAgent().isAccessibilityEnabled() && structure != null) { | |||
documentHandler.getLogicalStructureHandler().addLinkContentItem(pdfLink, structure); | |||
} | |||
documentHandler.currentPage.addAnnotation(pdfLink); | |||
documentHandler.getCurrentPage().addAnnotation(pdfLink); | |||
} | |||
} | |||
@@ -30,19 +30,16 @@ import java.io.IOException; | |||
import org.w3c.dom.Document; | |||
import org.apache.fop.fonts.Font; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.fonts.FontTriplet; | |||
import org.apache.fop.fonts.LazyFont; | |||
import org.apache.fop.fonts.SingleByteFont; | |||
import org.apache.fop.fonts.Typeface; | |||
import org.apache.fop.pdf.PDFDocument; | |||
import org.apache.fop.pdf.PDFNumber; | |||
import org.apache.fop.pdf.PDFStructElem; | |||
import org.apache.fop.pdf.PDFTextUtil; | |||
import org.apache.fop.pdf.PDFXObject; | |||
import org.apache.fop.render.RenderingContext; | |||
import org.apache.fop.render.intermediate.AbstractIFPainter; | |||
import org.apache.fop.render.intermediate.IFContext; | |||
import org.apache.fop.render.intermediate.IFException; | |||
import org.apache.fop.render.intermediate.IFState; | |||
import org.apache.fop.render.intermediate.IFUtil; | |||
@@ -55,9 +52,7 @@ import org.apache.fop.util.CharUtilities; | |||
/** | |||
* IFPainter implementation that produces PDF. | |||
*/ | |||
public class PDFPainter extends AbstractIFPainter { | |||
private final PDFDocumentHandler documentHandler; | |||
public class PDFPainter extends AbstractIFPainter<PDFDocumentHandler> { | |||
/** The current content generator */ | |||
protected PDFContentGenerator generator; | |||
@@ -77,29 +72,14 @@ public class PDFPainter extends AbstractIFPainter { | |||
*/ | |||
public PDFPainter(PDFDocumentHandler documentHandler, | |||
PDFLogicalStructureHandler logicalStructureHandler) { | |||
super(); | |||
this.documentHandler = documentHandler; | |||
super(documentHandler); | |||
this.logicalStructureHandler = logicalStructureHandler; | |||
this.generator = documentHandler.generator; | |||
this.generator = documentHandler.getGenerator(); | |||
this.borderPainter = new PDFBorderPainter(this.generator); | |||
this.state = IFState.create(); | |||
accessEnabled = this.getUserAgent().isAccessibilityEnabled(); | |||
} | |||
/** {@inheritDoc} */ | |||
@Override | |||
protected IFContext getContext() { | |||
return this.documentHandler.getContext(); | |||
} | |||
PDFDocument getPDFDoc() { | |||
return this.documentHandler.pdfDoc; | |||
} | |||
FontInfo getFontInfo() { | |||
return this.documentHandler.getFontInfo(); | |||
} | |||
/** {@inheritDoc} */ | |||
public void startViewport(AffineTransform transform, Dimension size, Rectangle clipRect) | |||
throws IFException { | |||
@@ -129,7 +109,7 @@ public class PDFPainter extends AbstractIFPainter { | |||
/** {@inheritDoc} */ | |||
public void drawImage(String uri, Rectangle rect) | |||
throws IFException { | |||
PDFXObject xobject = getPDFDoc().getXObject(uri); | |||
PDFXObject xobject = getDocumentHandler().getPDFDocument().getXObject(uri); | |||
if (xobject != null) { | |||
if (accessEnabled) { | |||
PDFStructElem structElem = (PDFStructElem) getContext().getStructureTreeElement(); | |||
@@ -156,7 +136,7 @@ public class PDFPainter extends AbstractIFPainter { | |||
@Override | |||
protected RenderingContext createRenderingContext() { | |||
PDFRenderingContext pdfContext = new PDFRenderingContext( | |||
getUserAgent(), generator, this.documentHandler.currentPage, getFontInfo()); | |||
getUserAgent(), generator, getDocumentHandler().getCurrentPage(), getFontInfo()); | |||
pdfContext.setMarkedContentInfo(imageMCI); | |||
return pdfContext; | |||
} | |||
@@ -317,12 +297,11 @@ public class PDFPainter extends AbstractIFPainter { | |||
} | |||
} | |||
private void drawTextWithDX ( int x, int y, String text, FontTriplet triplet, | |||
int letterSpacing, int wordSpacing, int[] dx ) { | |||
private void drawTextWithDX(int x, int y, String text, FontTriplet triplet, | |||
int letterSpacing, int wordSpacing, int[] dx) throws IFException { | |||
//TODO Ignored: state.getFontVariant() | |||
//TODO Opportunity for font caching if font state is more heavily used | |||
String fontKey = getFontInfo().getInternalFontKey(triplet); | |||
String fontKey = getFontKey(triplet); | |||
int sizeMillipoints = state.getFontSize(); | |||
float fontSize = sizeMillipoints / 1000f; | |||
@@ -56,6 +56,7 @@ import org.apache.fop.apps.MimeConstants; | |||
import org.apache.fop.apps.io.TempResourceURIGenerator; | |||
import org.apache.fop.render.intermediate.AbstractBinaryWritingIFDocumentHandler; | |||
import org.apache.fop.render.intermediate.IFContext; | |||
import org.apache.fop.render.intermediate.IFDocumentHandler; | |||
import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator; | |||
import org.apache.fop.render.intermediate.IFException; | |||
import org.apache.fop.render.intermediate.IFPainter; | |||
@@ -80,10 +81,10 @@ public class PSDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { | |||
* Utility class which enables all sorts of features that are not directly connected to the | |||
* normal rendering process. | |||
*/ | |||
protected PSRenderingUtil psUtil; | |||
private PSRenderingUtil psUtil; | |||
/** The PostScript generator used to output the PostScript */ | |||
protected PSGenerator gen; | |||
PSGenerator gen; | |||
/** the temporary file in case of two-pass processing */ | |||
private URI tempURI; | |||
@@ -134,6 +135,10 @@ public class PSDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { | |||
return MimeConstants.MIME_POSTSCRIPT; | |||
} | |||
PSGenerator getGenerator() { | |||
return gen; | |||
} | |||
/** {@inheritDoc} */ | |||
public IFDocumentHandlerConfigurator getConfigurator() { | |||
return new PSRendererConfigurator(getUserAgent(), new PSRendererConfigParser()); |
@@ -41,7 +41,6 @@ import org.apache.xmlgraphics.ps.PSGenerator; | |||
import org.apache.xmlgraphics.ps.PSResource; | |||
import org.apache.fop.fonts.Font; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.fonts.FontTriplet; | |||
import org.apache.fop.fonts.LazyFont; | |||
import org.apache.fop.fonts.MultiByteFont; | |||
@@ -49,7 +48,6 @@ import org.apache.fop.fonts.SingleByteFont; | |||
import org.apache.fop.fonts.Typeface; | |||
import org.apache.fop.render.RenderingContext; | |||
import org.apache.fop.render.intermediate.AbstractIFPainter; | |||
import org.apache.fop.render.intermediate.IFContext; | |||
import org.apache.fop.render.intermediate.IFException; | |||
import org.apache.fop.render.intermediate.IFState; | |||
import org.apache.fop.render.intermediate.IFUtil; | |||
@@ -61,12 +59,11 @@ import org.apache.fop.util.HexEncoder; | |||
/** | |||
* IFPainter implementation that produces PostScript. | |||
*/ | |||
public class PSPainter extends AbstractIFPainter { | |||
public class PSPainter extends AbstractIFPainter<PSDocumentHandler> { | |||
/** logging instance */ | |||
private static Log log = LogFactory.getLog(PSPainter.class); | |||
private PSDocumentHandler documentHandler; | |||
private PSBorderPainter borderPainter; | |||
private boolean inTextMode = false; | |||
@@ -80,27 +77,13 @@ public class PSPainter extends AbstractIFPainter { | |||
} | |||
protected PSPainter(PSDocumentHandler documentHandler, IFState state) { | |||
super(); | |||
this.documentHandler = documentHandler; | |||
this.borderPainter = new PSBorderPainter(documentHandler.gen); | |||
super(documentHandler); | |||
this.borderPainter = new PSBorderPainter(getGenerator()); | |||
this.state = state; | |||
} | |||
/** {@inheritDoc} */ | |||
protected IFContext getContext() { | |||
return this.documentHandler.getContext(); | |||
} | |||
PSRenderingUtil getPSUtil() { | |||
return this.documentHandler.psUtil; | |||
} | |||
FontInfo getFontInfo() { | |||
return this.documentHandler.getFontInfo(); | |||
} | |||
private PSGenerator getGenerator() { | |||
return this.documentHandler.gen; | |||
return getDocumentHandler().getGenerator(); | |||
} | |||
/** {@inheritDoc} */ | |||
@@ -168,7 +151,7 @@ public class PSPainter extends AbstractIFPainter { | |||
/** {@inheritDoc} */ | |||
protected void drawImageUsingImageHandler(ImageInfo info, Rectangle rect) | |||
throws ImageException, IOException { | |||
if (!getPSUtil().isOptimizeResources() | |||
if (!getDocumentHandler().getPSUtil().isOptimizeResources() | |||
|| PSImageUtils.isImageInlined(info, | |||
(PSRenderingContext)createRenderingContext())) { | |||
super.drawImageUsingImageHandler(info, rect); | |||
@@ -177,7 +160,7 @@ public class PSPainter extends AbstractIFPainter { | |||
log.debug("Image " + info + " is embedded as a form later"); | |||
} | |||
//Don't load image at this time, just put a form placeholder in the stream | |||
PSResource form = documentHandler.getFormForImage(info.getOriginalURI()); | |||
PSResource form = getDocumentHandler().getFormForImage(info.getOriginalURI()); | |||
PSImageUtils.drawForm(form, info, rect, getGenerator()); | |||
} | |||
} | |||
@@ -246,7 +229,7 @@ public class PSPainter extends AbstractIFPainter { | |||
if (top != null || bottom != null || left != null || right != null) { | |||
try { | |||
endTextObject(); | |||
if (getPSUtil().getRenderingMode() == PSRenderingMode.SIZE | |||
if (getDocumentHandler().getPSUtil().getRenderingMode() == PSRenderingMode.SIZE | |||
&& hasOnlySolidBorders(top, bottom, left, right)) { | |||
super.drawBorderRect(rect, top, bottom, left, right); | |||
} else { | |||
@@ -273,7 +256,7 @@ public class PSPainter extends AbstractIFPainter { | |||
if (fontName == null) { | |||
throw new NullPointerException("fontName must not be null"); | |||
} | |||
Typeface tf = (Typeface)getFontInfo().getFonts().get(fontName); | |||
Typeface tf = getFontInfo().getFonts().get(fontName); | |||
if (tf instanceof LazyFont) { | |||
tf = ((LazyFont)tf).getRealFont(); | |||
} | |||
@@ -363,10 +346,7 @@ public class PSPainter extends AbstractIFPainter { | |||
state.getFontFamily(), state.getFontStyle(), state.getFontWeight()); | |||
//TODO Ignored: state.getFontVariant() | |||
//TODO Opportunity for font caching if font state is more heavily used | |||
String fontKey = getFontInfo().getInternalFontKey(triplet); | |||
if (fontKey == null) { | |||
throw new IFException("Font not available: " + triplet, null); | |||
} | |||
String fontKey = getFontKey(triplet); | |||
int sizeMillipoints = state.getFontSize(); | |||
// This assumes that *all* CIDFonts use a /ToUnicode mapping | |||
@@ -529,10 +509,9 @@ public class PSPainter extends AbstractIFPainter { | |||
} | |||
private void useFont(String key, int size) throws IOException { | |||
PSFontResource res = this.documentHandler.getPSResourceForFontKey(key); | |||
PSFontResource res = getDocumentHandler().getPSResourceForFontKey(key); | |||
PSGenerator generator = getGenerator(); | |||
generator.useFont("/" + res.getName(), size / 1000f); | |||
res.notifyResourceUsageOnPage(generator.getResourceTracker()); | |||
} | |||
} |
@@ -45,7 +45,6 @@ import org.apache.fop.render.ImageHandlerUtil; | |||
import org.apache.fop.render.RenderingContext; | |||
import org.apache.fop.render.intermediate.AbstractIFPainter; | |||
import org.apache.fop.render.intermediate.IFConstants; | |||
import org.apache.fop.render.intermediate.IFContext; | |||
import org.apache.fop.render.intermediate.IFException; | |||
import org.apache.fop.render.intermediate.IFState; | |||
import org.apache.fop.render.intermediate.IFUtil; | |||
@@ -59,12 +58,11 @@ import org.apache.fop.util.XMLUtil; | |||
/** | |||
* IFPainter implementation that writes SVG. | |||
*/ | |||
public class SVGPainter extends AbstractIFPainter implements SVGConstants { | |||
private AbstractSVGDocumentHandler parent; | |||
public class SVGPainter extends AbstractIFPainter<AbstractSVGDocumentHandler> | |||
implements SVGConstants { | |||
/** The SAX content handler that receives the generated XML events. */ | |||
protected GenerationHelperContentHandler handler; | |||
private GenerationHelperContentHandler handler; | |||
private static final int MODE_NORMAL = 0; | |||
private static final int MODE_TEXT = 1; | |||
@@ -78,17 +76,11 @@ public class SVGPainter extends AbstractIFPainter implements SVGConstants { | |||
*/ | |||
public SVGPainter(AbstractSVGDocumentHandler parent, | |||
GenerationHelperContentHandler contentHandler) { | |||
super(); | |||
this.parent = parent; | |||
super(parent); | |||
this.handler = contentHandler; | |||
this.state = IFState.create(); | |||
} | |||
/** {@inheritDoc} */ | |||
protected IFContext getContext() { | |||
return parent.getContext(); | |||
} | |||
/** {@inheritDoc} */ | |||
public void startViewport(AffineTransform transform, Dimension size, Rectangle clipRect) | |||
throws IFException { |
@@ -63,6 +63,9 @@ | |||
documents. Example: the fix of marks layering will be such a case when it's done. | |||
--> | |||
<release version="FOP Trunk" date="TBD"> | |||
<action context="Test" dev="GA" type="fix"> | |||
Fix errors and warnings in example files. Add build.xml for documentation examples. | |||
</action> | |||
<action context="Code" dev="GA" type="fix" fixes-bug="53458" due-to="Dieter von Holten"> | |||
Fix incorrect language and country code key generation in hyphenation tree cache. | |||
</action> |
@@ -0,0 +1,99 @@ | |||
/* | |||
* 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. | |||
*/ | |||
package org.apache.fop.render.intermediate; | |||
import java.awt.Dimension; | |||
import java.awt.Paint; | |||
import java.awt.Rectangle; | |||
import java.awt.geom.AffineTransform; | |||
import org.junit.Before; | |||
import org.junit.Test; | |||
import org.w3c.dom.Document; | |||
import org.apache.fop.fonts.FontInfo; | |||
import org.apache.fop.fonts.FontTriplet; | |||
import org.apache.fop.render.RenderingContext; | |||
import static org.junit.Assert.assertEquals; | |||
import static org.mockito.Mockito.mock; | |||
import static org.mockito.Mockito.when; | |||
public class AbstractIFPainterTestCase { | |||
private AbstractIFPainter<?> sut; | |||
private IFDocumentHandler handler; | |||
@Before | |||
public void setUp() { | |||
handler = mock(IFDocumentHandler.class); | |||
sut = new AbstractIFPainter<IFDocumentHandler>(handler) { | |||
public void startViewport(AffineTransform transform, Dimension size, Rectangle clipRect) | |||
throws IFException { | |||
} | |||
public void endViewport() throws IFException { | |||
} | |||
public void startGroup(AffineTransform transform) throws IFException { | |||
} | |||
public void endGroup() throws IFException { | |||
} | |||
public void clipRect(Rectangle rect) throws IFException { | |||
} | |||
public void fillRect(Rectangle rect, Paint fill) throws IFException { | |||
} | |||
public void drawImage(String uri, Rectangle rect) throws IFException { | |||
} | |||
public void drawImage(Document doc, Rectangle rect) throws IFException { | |||
} | |||
@Override | |||
protected RenderingContext createRenderingContext() { | |||
return null; | |||
} | |||
public void drawText(int x, int y, int letterSpacing, int wordSpacing, int[][] dp, | |||
String text) throws IFException { | |||
} | |||
}; | |||
FontInfo fontInfo = mock(FontInfo.class); | |||
when(handler.getFontInfo()).thenReturn(fontInfo); | |||
} | |||
@Test | |||
public void testGetFontKey() throws IFException { | |||
String expected = "the expected string"; | |||
FontTriplet triplet = mock(FontTriplet.class); | |||
FontInfo fontInfo = handler.getFontInfo(); | |||
when(fontInfo.getInternalFontKey(triplet)).thenReturn(expected); | |||
assertEquals(expected, sut.getFontKey(triplet)); | |||
} | |||
@Test(expected = IFException.class) | |||
public void testGetFontKeyMissingFont() throws IFException { | |||
FontTriplet triplet = mock(FontTriplet.class); | |||
when(handler.getFontInfo().getInternalFontKey(triplet)).thenReturn(null); | |||
sut.getFontKey(triplet); | |||
} | |||
} |