Home » displaytag-1.1.1-src » org » displaytag » export » [javadoc | source]

    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;
   15   import java.io.OutputStream;
   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 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 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 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 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   }

Home » displaytag-1.1.1-src » org » displaytag » export » [javadoc | source]