Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 927a1532fb070c51449654bb68b5bde2 > files > 457

itext-manual-2.0.8-0.0.2mdv2008.1.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>iText Tutorial: Rich Text Format</title><meta name="Description" content="How-to generate RTF documents using iText."><meta name="Keywords" content="PDF, JAVA, iText, RTF, examples, Lowagie, Bruno"><link rel="stylesheet" href="./../style.css" type="text/css"></head><body><a name="top" class="logo" href="http://www.lowagie.com/iText"><img src="http://www.lowagie.com/iText/images/logo.gif" border="0" alt="iText"></a><h1>Tutorial: iText by Example</h1><h2>Rich Text Format</h2><div id="content"><div id="sidebar"><a class="toc" href="./../index.html#rtf">
							Table of Contents
						</a><div align="Center" class="small">Best viewed with:<br><script type="text/javascript"><!--
google_ad_client = "pub-0340380473790570";
google_ad_width = 180;
google_ad_height = 60;
google_ad_format = "180x60_as_rimg";
google_cpa_choice = "CAAQyaj8zwEaCIwcWMzeycafKMu293M";
//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div><div class="sidetitle">Sections:</div><ul><li><a href="#rtfpackage">The RTF Package</a></li><li><a href="#introduction">Introduction to RTF</a></li><li><a href="#creatingrtf">Creating a basic RTF document</a></li><li><a href="#unsupported">Unsupported iText features</a></li><li><a href="#transition">Transitioning from the RtfWriter to the RtfWriter2</a></li><li><a href="#extendedhf">Extended header / footer support</a></li><li><a href="#tocsupport">Table of contents support</a></li><li><a href="#extendedcellborder">Extended cell border support</a></li><li><a href="#pagenumberelement">Page number element</a></li><li><a href="#diskcaching">Using a Disk Cache for document generation</a></li></ul><br><br><div class="sidetitle">Examples:</div><div class="example"><a class="source" href="http://itext.ugent.be/library/com/lowagie/examples/rtf/HelloWorld.java">HelloWorld</a><br><div class="description">Generates a simple 'Hello World!' RTF file</div><div class="small">Output:</div><ul><li><a href="http://itext.ugent.be/library/com/lowagie/examples/rtf/HelloWorld.rtf">HelloWorld.rtf</a></li></ul></div><div class="example"><div class="small">ANT script (all examples):</div><ul><li><a href="./../rtf/build.xml">
					build.xml
				</a></li></ul></div></div><div id="main"><font color="#FF0000" size="+2">UNDER CONSTRUCTION</font><a name="rtfpackage"></a><div class="title">The RTF Package:</div><div xmlns="http://www.w3.org/1999/xhtml" xmlns:site="http://www.lowagie.com/iText/site">
		  The RTF package is an extension of the iText library and allows iText
		  to output Rich Text Files in additon to PDF files. These files can then
		  be viewed and edited with RTF viewers such as Microsoft Word or OpenOffice.or
		  Writer.
		</div><div>
		  The main class for generating RTF documents is the <a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfWriter2.html">RtfWriter2</a>.
		  It supports most of iText's features with the exception of those features listed
		  under the <a xmlns="http://www.w3.org/1999/xhtml" href="#unsupported">unsupported features</a>. In addition to this
		  there are a number of extensions to the core iText classes that provide access
		  to RTF specific functionality:<br><br>
		  <ul>
		    <li>Extensions to core classes
		      <ul>
		        <li><a xmlns="" href="./../rtf/extensions/font/index.html#">Extended font support</a></li>
		        <li xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="./../rtf/extensions/hf/index.html#">Extended header/footer support</a></li>
		        <li xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="./../rtf/extensions/table/index.html#">Extended table cell support</a></li>
		      </ul>
		    </li>
		    <li xmlns="http://www.w3.org/1999/xhtml">RTF specific features
		      <ul>
		        <li>Paragraph stylesheets</li>
		        <li>Tab support</li>
		        <li>Table of contents</li>
		        <li>Page numbering</li>
		        <li>Word 97-2000 RTF for Drawing Objects (Shapes)</li>
		        <li>Direct content</li>
		      </ul>
		    </li>
		    <li><a xmlns="" href="./../rtf/documentsettings/index.html#">RTF generation settings</a></li>
		  </ul>
		</div><a class="top" href="#top">Go to top of the page</a><a name="introduction"></a><div class="title">Introduction to RTF:</div><div xmlns="http://www.w3.org/1999/xhtml">
          RTF is the Rich Text Format developed by Microsoft with the aim of providing
          a cross-platform text-based document format. The main advantage that it has
          over PDF is that it can easily be edited with most word processing software.
          Its biggest disadvantage is that it is rendered by the word processing software
          when the RTF document is opened and not when the RTF document is generated.
          This leads to the situation that the document can look slightly different on
          different platforms.<br><br>
          It is important to remember that RTF is a document description format and
          when iText creates a RTF document, only the description of the document is
          generated. NO RENDERING TAKES PLACE. It is thus impossible to provide access
          to such things as page numbers or page events.<br><br>
          Apart from these considerations creating an RTF document works just like
          creating any other document with iText.
          
          <div class="subtitle">RtfWriter2 and RtfWriter. Which one to use?</div>
          
          If you are starting with a new iText project, then use the
          <a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfWriter2.html">RtfWriter2</a>. It
          generates better RTF code, provides more functionality and is actively maintained.
          The old RtfWriter is only provided for backward compatability and will be
          removed by the end of 2007.<br xmlns="http://www.w3.org/1999/xhtml"><br>
          If you have an existing project using the old RtfWriter, read the section on
          <a href="#transition">transitioning to the RtfWriter2</a>.
        </div><a class="top" href="#top">Go to top of the page</a><a xmlns="" name="creatingrtf"></a><div class="title">Creating a basic RTF document:</div><div xmlns="http://www.w3.org/1999/xhtml">
          Creating a basic RTF document works just like creating a basic PDF document:
          <pre class="commandline">
Document document = new Document();
RtfWriter2.getInstance(document,
	new FileOutputStream("testRTFdocument.rtf"));
document.open();
document.add(new Paragraph("Hello World!"));
document.close();
          </pre>
          <div id="example">
					Example: java
					<a xmlns="" href="http://itext.ugent.be/library/com/lowagie/examples/rtf/HelloWorld.java">
						com.lowagie.examples.rtf.HelloWorld</a><br>Generates a simple 'Hello World!' RTF file: see
						 <a href="http://itext.ugent.be/library/com/lowagie/examples/rtf/HelloWorld.rtf">HelloWorld.rtf</a><br></div>
          You can then use the objects described in <a href="./..//index.html#part2">Using High Level Objects</a>
          to create more complex RTF documents.
        </div><a class="top" href="#top">Go to top of the page</a><a name="unsupported"></a><div class="title">Unsupported iText features:</div><div xmlns="http://www.w3.org/1999/xhtml">
          A number of iText features are not supported in the RtfWriter2 due to the fact
          that they either have not been implemented or are not supported by the
          RTF format itself. The following list may not be complete, since the development
          of the RtfWriter2 sometimes lags behind the development of the core library.<br>
          <dl>
            <dt style="font-weight: bold">Images other than JPEG, PNG, BMP and WMF</dt>
            <dd>Only these image types are supported natively in the RTF format.</dd>
            <dt style="font-weight: bold">Rotated images</dt>
            <dd></dd>
            <dt style="font-weight: bold">Nested tables</dt>
            <dd></dd>
            <dt style="font-weight: bold">Embedded fonts</dt>
            <dd></dd>
            <dt style="font-weight: bold">Lists with non-bullet symbols</dt>
            <dd>Support may be added on demand.</dd>
            <dt style="font-weight: bold">Table.setSpaceInsideCell and Table.setSpaceBetweenCells</dt>
            <dd></dd>
            <dt style="font-weight: bold">Table.setSpaceBefore</dt>
            <dd>Will be supported in the future.</dd>
            <dt style="font-weight: bold">Table.padding</dt>
            <dd></dd>
            <dt style="font-weight: bold">Watermarks</dt>
            <dd></dd>
            <dt style="font-weight: bold">Encryption</dt>
            <dd></dd>
            <dt style="font-weight: bold">Viewer preferences</dt>
            <dd>These only apply to the Adobe Acrobat Viewer.</dd>
          </dl>
        </div><a class="top" href="#top">Go to top of the page</a><a xmlns="" name="transition"></a><div class="title">Transitioning from the RtfWriter to the RtfWriter2:</div><div xmlns="http://www.w3.org/1999/xhtml">
          The <a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfWriter.html">RtfWriter</a>
          is the old RTF generating class. It has been deprecated and superceded by
          the <a href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfWriter2.html">RtfWriter2</a>
          which is now the only class that should be used for RTF generation. The
          RtfWriter is now only provided for backward compatability and will be removed
          from the library by the end of 2007. The RtfWriter receives NO UPDATES.<br xmlns="http://www.w3.org/1999/xhtml"><br>
          Transitioning from the old RtfWriter to the new RtfWriter2 should by no problem
          if you do not use any of the extensions provided for the old RtfWriter. If you
          did use extensions for the old RtfWriter the following table shows which classes
          provide the equivalent functionality in the new RtfWriter2:
          <table>
            <tr>
		      <td>Old extensions</td>
		      <td>New extensions</td>    
            </tr>
            <tr>
		      <td><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfFont.html">com.lowagie.text.rtf.RtfFont</a></td>
		      <td xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/style/RtfFont.html">com.lowagie.text.rtf.style.RtfFont</a></td>
            </tr>
            <tr xmlns="http://www.w3.org/1999/xhtml">
		      <td><a xmlns="" href="http://itext.ugent.be/library/api/com/lowgaie/text/rtf/HeaderFooter.html">com.lowgaie.text.rtf.HeaderFooter</a></td>
		      <td xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/headerfooter/RtfHeaderFooter.html">com.lowagie.text.rtf.headerfooter.RtfHeaderFooter</a></td>
            </tr>
            <tr xmlns="http://www.w3.org/1999/xhtml">
		      <td><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/HeaderFooters.html">com.lowagie.text.rtf.HeaderFooters</a></td>
		      <td xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/headerfooter/RtfHeaderFooterGroup.html">com.lowagie.text.rtf.headerfooter.RtfHeaderFooterGroup</a></td>
            </tr>
            <tr xmlns="http://www.w3.org/1999/xhtml">
		      <td><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfPageNumber.html">com.lowagie.text.rtf.RtfPageNumber</a></td>
		      <td xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/field/RtfPageNumber.html">com.lowagie.text.rtf.field.RtfPageNumber</a></td>
            </tr>
            <tr xmlns="http://www.w3.org/1999/xhtml">
		      <td><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfTOC.html">com.lowagie.text.rtf.RtfTOC</a></td>
		      <td xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/field/RtfTableOfContents.html">com.lowagie.text.rtf.field.RtfTableOfContents</a></td>
            </tr>
            <tr xmlns="http://www.w3.org/1999/xhtml">
		      <td><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfTOCEntry.html">com.lowagie.text.rtf.RtfTOCEntry</a></td>
		      <td xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/field/RtfTOCEntry.html">com.lowagie.text.rtf.field.RtfTOCEntry</a></td>
            </tr>
            <tr xmlns="http://www.w3.org/1999/xhtml">
		      <td><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/RtfTableCell.html">com.lowagie.text.rtf.RtfTableCell</a></td>
		      <td xmlns="http://www.w3.org/1999/xhtml"><a xmlns="" href="http://itext.ugent.be/library/api/com/lowagie/text/rtf/table/RtfCell.html">com.lowagie.text.rtf.table.RtfCell</a></td>
            </tr>
          </table>
        </div><a class="top" href="#top">Go to top of the page</a><a name="extendedhf"></a><div class="title">Extended header / footer support:</div><div xmlns="http://www.w3.org/1999/xhtml">
One of the limitations of the RTF format is that only one header
and footer is allowed per section. There are two ways to overcome 
this limitation. It is possible to
<ul>
<li>use multiple Chapters. Every Chapter can have different headers and footers.</li>
<li>use the RtfHeaderFooterGroup to have up to 3 different headers or footers per document or Chapter.</li>
</ul>
<br>
<div class="subtitle">Using multiple Chapters</div>
The first solution is very simple. Before adding the Chapter to the document,
you set the headers and footers that you want to have in that Chapter.
<pre class="commandline">
HeaderFooter header1 = new HeaderFooter("This is the first chapter", false);
HeaderFooter header2 = new HeaderFooter("This is page", ".");
Chapter chapter1 = new Chapter(new Paragraph("This is the first Chapter"), 1);
Chapter chapter2 = new Chapter(new Paragraph("Chapter 2"), 2);
document.setHeader(header1);
document.add(chapter1);
document.setHeader(header2);
document.add(chapter2);</pre>
<br>
<div class="subtitle">Using the RtfHeaderFooterGroup</div>
The second solution is to use the <span class="commandline">RtfHeaderFooterGroup</span>.
This is slightly more complex. You will have to create a
<span class="commandline">RtfHeaderFooterGroup</span> object
and then add the <span class="commandline">HeaderFooter</span> objects
to the <span class="commandline">RtfHeaderFooterGroup</span> specifying
on which pages the headers / footers should appear. The following positions are supported:
<ul>
<li><span class="commandline">com.lowagie.text.rtf.headerfooter.RtfHeaderFooter.DISPLAY_FIRST_PAGE</span></li>
<li><span class="commandline">com.lowagie.text.rtf.headerfooter.RtfHeaderFooter.DISPLAY_ALL_PAGES</span></li>
<li><span class="commandline">com.lowagie.text.rtf.headerfooter.RtfHeaderFooter.DISPLAY_LEFT_PAGES</span></li>
<li><span class="commandline">com.lowagie.text.rtf.headerfooter.RtfHeaderFooter.DISPLAY_RIGHT_PAGES</span></li>
</ul>
DISPLAY_ALL_PAGES and DISPLAY_LEFT_PAGES/DISPLAY_RIGHT_PAGES cannot be combined,
otherwise all combinations are possible.<br><br>
The first step is to create a RtfHeaderFooterGroup and then you add the HeaderFooter
objects and specify where they are to appear.
<pre class="commandline">
RtfHeaderFooterGroup footer = new RtfHeaderFooterGroup();
footer.setHeaderFooter(
	new RtfHeaderFooter(
		new Phrase("This is the footer on the title page")),
			com.lowagie.text.rtf.headerfooter.RtfHeaderFooter.DISPLAY_FIRST_PAGE);
footer.setHeaderFooter(
	new RtfHeaderFooter(
		new Phrase("This is a left side page")),
			com.lowagie.text.rtf.headerfooter.RtfHeaderFooter.DISPLAY_LEFT_PAGES);
footer.setHeaderFooter(
	new RtfHeaderFooter(
		new Phrase("This is a right side page")),
			com.lowagie.text.rtf.headerfooter.RtfHeaderFooter.DISPLAY_RIGHT_PAGES);
document.setFooter(footer);</pre>
<br>
<div class="subtitle">Arbitrary Elements in the header</div>
To give the <span class="commandline">RtfWriter2</span> more flexibility 
when creating headers or footers, the
<span class="commandline">com.lowagie.text.rtf.headerfooter.RtfHeaderFooter</span> 
makes it possible to add any <span class="commandline">Element</span> 
as a header or footer. This can be used to add tables to the header, 
giving improved formating capabilities.
<pre class="commandline">
Table headerTable = new Table(3);
headerTable.addCell("Document header");
Cell pageNumberCell = new Cell();
pageNumberCell.add(new RtfPageNumber());
headerTable.addCell(pageNumberCell);
headerTable.addCell("Company Name");
HeaderFooter header = new RtfHeaderFooter(headerTable);
document.setHeader(header);</pre>
<div id="example"></div>
</div><a class="top" href="#top">Go to top of the page</a><a xmlns="" name="tocsupport"></a><div class="title">Table of contents support:</div><div xmlns="http://www.w3.org/1999/xhtml">
The <span class="commandline">RtfWriter2</span> also supports the creation of a table
of contents and the addition of entries into that table of contents. There is one
limitation and that is that the actual table of contents will have to be generated
by the RTF viewer application, because iText does not know how to render RTF documents
and can therefore not calculate the correct page numbers. When creating the
<span class="commandline">RtfTableOfContents</span> it is necessary to specify
the text that is displayed before the field is updated by the viewer.<br>
<br>
<div class="subtitle">Adding a table of contents</div>
You can add the actual table of contents anywhere in the document.
Simply create an instance of
<span class="commandline">com.lowagie.text.rtf.toc.RtfTableOfContents</span>
and add it to a paragraph. The constructor takes the default string to display
and the font to use as parameters.
<pre class="commandline">
Paragraph para = new Paragraph();
para.add(new RtfTableOfContents(
	"RIGHT CLICK AND HERE AND SELECT \"UPDATE FIELD\" TO UPDATE.", 
	new Font()));
doc.add(para);</pre>
<br>
<div class="subtitle">Adding entries to the table of contents</div>
You can add entries to the table of contents before or after you've added
the actual table of contents. It's as simple as adding an instance of RtfTOCEntry
to the document.
<pre class="commandline">
RtfTOCEntry tocEntry =
	new RtfTOCEntry("Manually added TOC entry", new Font());
document.add(tocEntry);
</pre>
The second possibility is to let the
<span class="commandline">RtfWriter2</span> automatically add
<span class="commandline">RtfTOCEntry</span>s for every Chapter you add.
<pre class="codeBlock">
writer2.setAutogenerateTOCEntries(true);</pre>
<div id="example"></div>
</div><a class="top" href="#top">Go to top of the page</a><a xmlns="" name="extendedcellborder"></a><div class="title">Extended cell border support:</div><div xmlns="http://www.w3.org/1999/xhtml">
The <span class="commandline">RtfWriter2</span> also provides support for using special
border styles with table cells. To use this feature you add <span class="commandline">RtfCell</span>
objects to the <span class="commandline">Table</span> instead of <span class="commandline">Cell</span>s.
<pre class="commandline">
RtfCell cellDotted = new RtfCell("Dotted border");
cellDotted.setBorders(new RtfBorderGroup(
	Rectangle.BOX, RtfBorder.BORDER_DOTTED, 1, new Color(0, 0, 0)));
RtfCell cellEmbossed = new RtfCell("Embossed border");
cellEmbossed.setBorders(
	new RtfBorderGroup(
		Rectangle.BOX, RtfBorder.BORDER_EMBOSS, 1, new Color(0, 0, 0)));
			    RtfCell cellNoBorder = new RtfCell("No border")
cellNoBorder.setBorders(new RtfBorderGroup());
 
table.addCell(cellDotted);
table.addCell(cellEmbossed);
table.addCell(cellNoBorder);
</pre>
The RtfCell supports a long list of border styles. Please consult the javadoc documentation
for an exhaustive list.
<div id="example"></div>
</div><a class="top" href="#top">Go to top of the page</a><a xmlns="" name="pagenumberelement"></a><div class="title">Page number element:</div><div xmlns="http://www.w3.org/1999/xhtml">
The <span class="commandline">RtfPageNumber</span> class allows you to add
the number of the current page at any position in the document. The primary use is
in headers or footers with special formatting.
<pre class="commandline">
Table headerTable = new Table(3);
headerTable.addCell("Document header");
Cell pageNumberCell = new Cell();
pageNumberCell.add(new RtfPageNumber());
pageNumberCell.add(new Chunk(" of "));
pageNumberCell.add(new RtfTotalPageNumber());
headerTable.addCell(pageNumberCell);
headerTable.addCell("Company Name");
HeaderFooter header = new RtfHeaderFooter(headerTable);
document.setHeader(header);</pre>
<div id="example"></div>.
</div><a class="top" href="#top">Go to top of the page</a><a xmlns="" name="diskcaching"></a><div class="title">Using a Disk Cache for document generation:</div><div xmlns="http://www.w3.org/1999/xhtml">
The RtfWriter2 differs in one more way from PdfWriter and that is that due to the way the
rtf format works, the document data has to be cached and can only be written to the final
file after the complete document has been generated. For very large documents and those containing
big images, this results in huge memory requirements.<br>
To solve this problem the RtfWriter2 supports caching the document data on disk in a temporary file.
To activate disk caching insert the following code directly after creating the RtfWriter2.
<pre class="commandline">
writer2.setDataCacheStyle(com.lowagie.text.rtf.document.output.RtfDataCache.CACHE_DISK);
</pre>
</div><a class="top" href="#top">Go to top of the page</a><div id="footer">
			Page Updated: 2006/10/05 21:25:54
			Copyright &copy; 1999-2005
			Mark Hall<br><a href="http://www.lowagie.com/iText/">iText</a> is a Free Java-Pdf library by Bruno Lowagie and Paulo Soares.
		</div></div></div><div class="commercial"><br><script type="text/javascript"><!--
google_ad_client = "pub-0340380473790570";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_channel ="";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "1B09BD";
google_color_url = "100670";
google_color_text = "707070";
//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><br><br><div class="subtitle">Amazon books:</div><script type="text/javascript"><!--
document.write('<iframe src="http://rcm.amazon.com/e/cm?t=itisacatalofwebp&o=1&p=8&l=as1&asins=0596004753&fc1=000000&lc1=0000ff&bc1=&lt1=_blank&IS2=1&bg1=ffffff&f=ifr" width="120" height="240" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" align="Center"></iframe>');
//--></script><a xmlns="" href="http://www.amazon.co.uk/exec/obidos/ASIN/0596004753/catloogjecom-21" class="amazonlinks">
			amazon.co.uk-link
		</a><br><br><script type="text/javascript"><!--
document.write('<iframe src="http://rcm.amazon.com/e/cm?t=itisacatalofwebp&o=1&p=10&l=st1&mode=books&search=JAVA&=1&fc1=&lc1=&lt1=&bg1=&f=ifr" width="120" height="460" border="0" frameborder="0" style="border:none;" scrolling="no" marginwidth="0" marginheight="0"></iframe>');
//--></script><br><script type="text/javascript"><!--
document.write('<iframe src="http://rcm.amazon.com/e/cm?t=itisacatalofwebp&o=1&p=10&l=st1&mode=books&search=RTF&=1&fc1=&lc1=&lt1=&bg1=&f=ifr" width="120" height="460" border="0" frameborder="0" style="border:none;" scrolling="no" marginwidth="0" marginheight="0"></iframe>');
//--></script><br></div></body></html>