# iText: Tabelle in Footer einfügen



## donmarco (23. Sep 2004)

Hallo zusammen,
ich benutze die iText-PDF-Library um PDF-Dokumente zu erstellen. Nun habe ich das Problem das ich gerne eine Tabelle in meinen Footer einfügen möchte. Das Tutorial auf der offiziellen Seite gibt dazu leider keine Auskunft. Auch andere Seiten die sich mit diesem Thema beschäftigen haben mir nicht weitergeholfen  . Ich habe leider keine Ahnung wie ich das bewerkstelligen soll. Kennt sich jemand damit aus und wäre so freundlich mir zu helfen. Ich bin für jede Antwort sehr dankbar.

--
Gruß Marco


----------



## thE_29 (23. Sep 2004)

der footer ist ja die fußzeile, oder?

wie willstn da bitte ne tabelle einfügen, du kannst ja nur sagen ob da ein Text (seite oder page steht) und er macht ja die seitennumerierung von alleine!

also, ob man da unten ne tabelle einfügen kann, ist fraglich!


----------



## donmarco (23. Sep 2004)

Ja der Footer ist die Fußzeile. Laut dem Tutorial geht das auch, aber wie wird nicht beschrieben. Aber vielleicht brauch ich garkeine Tabelle. Ich möchte einen Footer in diesem Form haben.

--------------------------------
Datum (linkbündig)  |  Seitenzahl (rechtsbündig)

--
Gruß Marco


----------



## thE_29 (23. Sep 2004)

du könntest es so probieren!


```
String strDate = new SimpleDateFormat("dd.MM.yy").format(new Date());
    HeaderFooter footer = new HeaderFooter(new Phrase("Seitenanzahl: "),new Phrase("Datum " + strDate +"\t\t\t"));
```

hab mich noch ein bißchen rumgespielt, aber das ist einfach nur behindat!

und es gibt noch das chap1201.java und pdf da wird das gemacht, aber mit listeners usw... das is mir zu blöd zum anschauen


----------



## donmarco (23. Sep 2004)

Danke für deine schnelle Antwort. Das ist allerdings nich ganz das was ich haben möchte. Das Datum soll ganz links und die Seitenzahlen ganz rechts ausgerichtet werden.

etwa so:

```
--------------------------------
 |                                 |                                 
 |                                 |
 |                                 |
 |                                 |
 |                                 |
 |                                 |
 |                                 |
 |                                 |
 |                                 |
 |                                 |
 |                                 |
|---------------------------------|
|Datum                      Seite |
  --------------------------------
```


----------



## thE_29 (23. Sep 2004)

jo, du musst vor dem Datum die \t\t\t aber die Seitenanzahl ist immer mittig (deswegen hatte ich seite zuerst!)

schau dir das chap1201.java an, dort macht er es irgendwie


----------



## donmarco (23. Sep 2004)

So hab das Problem dank eines Beispieles von der Seite http://itextpdf.sourceforge.net/ (examples-133.zip)  gelöst. Die Beispiele sind sehr ausführlich und sollten auch die restlichen Fragen die nicht im offiziellen Tutorial geklärt werden, beantworten.

Wen es interessiert hier der Quelltext.

*FootWriter.java*

```
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfPageEventHelper;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;

public class FootWriter extends PdfPageEventHelper
{
    public void onEndPage(PdfWriter writer, Document document)
    {
        try {
            Rectangle page = document.getPageSize();
            PdfPTable head = new PdfPTable(2);

            PdfPCell tmp = new PdfPCell(new Phrase("Seite: 1"));
            tmp.setBorder(Rectangle.NO_BORDER);
            head.addCell(tmp);           
            tmp.setPhrase(new Phrase("Datum: 12.01.2004"));
            tmp.setHorizontalAlignment(Element.ALIGN_RIGHT);
            tmp.setBorder(Rectangle.NO_BORDER);
            
            head.addCell(tmp);
            
            head.setTotalWidth(page.width() - document.leftMargin() - document.rightMargin());
            head.writeSelectedRows(0, -1, document.leftMargin(), document.bottomMargin(),
            writer.getDirectContent());
        }
        catch (Exception e) {
            throw new ExceptionConverter(e);
        }
    }
}
```

*PDF.java*

```
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

import com.lowagie.text.Cell;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;

public class PDF
{
	public PDF()
	{
		
		Document document = new Document();
		float scale_factor = 0;
		
		try {

			// PdfWriter erzeugen und mit FileOutputStream verbinden
			PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("c://test.pdf"));

            // Seitenanzahl und Papierformat setzen
            document.setPageCount(1);
            document.setPageSize(PageSize.A4);
            
            
            writer.setPageEvent(new FootWriter());
            
            // Dokument öffnen
            document.open();
               	
         	document.add(new Paragraph(new Chunk("test")));
        }
        
        catch(DocumentException de) {
            System.err.println(de.getMessage());
        }
        catch(IOException ioe) {
            System.err.println(ioe.getMessage());
        }
        
        // Dokument schließen
        document.close();
	}
	
	public static void main(String args[])
	{
		new PDF();
	}
}
```


----------

