KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > displaytag > export > DefaultPdfExportView


1 /**
2  * Licensed under the Artistic License; you may not use this file
3  * except in compliance with the License.
4  * You may obtain a copy of the License at
5  *
6  * http://displaytag.sourceforge.net/license.html
7  *
8  * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
9  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
10  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11  */

12 package org.displaytag.export;
13
14 import java.io.IOException JavaDoc;
15 import java.io.OutputStream JavaDoc;
16
17 import com.lowagie.text.Document;
18 import com.lowagie.text.DocumentException;
19 import com.lowagie.text.pdf.BaseFont;
20 import com.lowagie.text.pdf.PdfContentByte;
21 import com.lowagie.text.pdf.PdfPTable;
22 import com.lowagie.text.pdf.PdfPageEventHelper;
23 import com.lowagie.text.pdf.PdfTemplate;
24 import com.lowagie.text.pdf.PdfWriter;
25
26
27 /**
28  * PDF exporter using iText.
29  * @author Jorge L. Barroso
30  * @version $Revision$ ($Author$)
31  */

32 public class DefaultPdfExportView extends DefaultItextExportView
33 {
34
35     /**
36      * @see org.displaytag.export.BaseExportView#getMimeType()
37      * @return "application/pdf"
38      */

39     public String JavaDoc getMimeType()
40     {
41         return "application/pdf"; //$NON-NLS-1$
42
}
43
44     /**
45      * Initializes the PDF writer this export view uses to write the table document.
46      * @param document The iText document to be written.
47      * @param out The output stream to which the document is written.
48      * @throws DocumentException If something goes wrong during initialization.
49      */

50     protected void initItextWriter(Document document, OutputStream JavaDoc out) throws DocumentException
51     {
52         PdfWriter.getInstance(document, out).setPageEvent(new PageNumber());
53     }
54
55     /**
56      * Prints a page number at the bottom of each page. Based on
57      * http://itextdocs.lowagie.com/examples/com/lowagie/examples/directcontent/pageevents/PageNumbersWatermark.java
58      * @author Jorge L. Barroso
59      * @version $Revision$ ($Author$)
60      */

61     private static class PageNumber extends PdfPageEventHelper
62     {
63
64         /**
65          * @see com.lowagie.text.pdf.PdfPageEventHelper#onEndPage(com.lowagie.text.pdf.PdfWriter,
66          * com.lowagie.text.Document)
67          */

68         public void onEndPage(PdfWriter writer, Document document)
69         {
70             /** The headertable. */
71             PdfPTable table = new PdfPTable(2);
72             /** A template that will hold the total number of pages. */
73             PdfTemplate tpl = writer.getDirectContent().createTemplate(100, 100);
74             /** The font that will be used. */
75             BaseFont helv = null;
76             try
77             {
78                 helv = BaseFont.createFont("Helvetica", BaseFont.WINANSI, false);
79             }
80             catch (DocumentException e)
81             {
82             }
83             catch (IOException JavaDoc e)
84             {
85             }
86             PdfContentByte cb = writer.getDirectContent();
87             cb.saveState();
88             // write the headertable
89
table.setTotalWidth(document.right() - document.left());
90             table.writeSelectedRows(0, -1, document.left(), document.getPageSize().height() - 50, cb);
91             // compose the footer
92
String JavaDoc text = "Page " + writer.getPageNumber();
93             float textSize = helv.getWidthPoint(text, 12);
94             float textBase = document.bottom() - 20;
95             cb.beginText();
96             cb.setFontAndSize(helv, 12);
97             float adjust = helv.getWidthPoint("0", 12);
98             cb.setTextMatrix(document.right() - textSize - adjust, textBase);
99             cb.showText(text);
100             cb.endText();
101             cb.addTemplate(tpl, document.right() - adjust, textBase);
102             cb.saveState();
103         }
104     }
105 }
106
Popular Tags