iText Header

  • Themenstarter Themenstarter Tomm
  • Beginndatum Beginndatum
T

Tomm

Gast
Hi,

kann mir jemand sagen wie ich einfach oben und unten eine Zeile in mein PDF-Dokument reinzaubere? Das Objekt HeaderFooter gibt es in iText nicht mehr und alle Beispiele verwenden dies.
Danke
 
Ich mache das so: Die Klasse, die das PDF erstellt extends extends PdfPageEventHelper

Dann gibt es diverse Funktionen:
Java:
	/**
	 * @see com.lowagie.text.pdf.PdfPageEvent#onCloseDocument(com.lowagie.text.pdf.PdfWriter,
	 *      com.lowagie.text.Document)
	 */
	public void onCloseDocument(PdfWriter writer, Document document) {
		total.beginText();
		total.setFontAndSize(helv, 8);
		total.setTextMatrix(0, 0);
		total.showText(String.valueOf(writer.getPageNumber() - 1));
		total.endText();
	}

	/**
	 * @see com.lowagie.text.pdf.PdfPageEvent#onEndPage(com.lowagie.text.pdf.PdfWriter,
	 *      com.lowagie.text.Document)
	 */
	public void onEndPage(PdfWriter writer, Document document) {
		PdfContentByte cb = writer.getDirectContent();

		cb.saveState();
		String text = "Seite " + writer.getPageNumber() + " von ";
		float textBase = document.bottom() - 8;
		float textSize = helv.getWidthPoint(text, 8);
		float adjust = helv.getWidthPoint("0", 8);

		cb.beginText();
		cb.setFontAndSize(helv, 8);
		cb.setTextMatrix(document.right() - textSize - adjust, textBase);
		cb.showText(text);
		cb.setTextMatrix(document.left(), textBase);
		cb
				.showText("Text in Fußzeile");

		cb.endText();
		cb.addTemplate(total, document.right() - adjust, textBase);
		cb.restoreState();
	}

	/**
	 * @see com.lowagie.text.pdf.PdfPageEvent#onOpenDocument(com.lowagie.text.pdf.PdfWriter,
	 *      com.lowagie.text.Document)
	 */
	public void onOpenDocument(PdfWriter writer, Document document) {
		total = writer.getDirectContent().createTemplate(100, 100);
		total.setBoundingBox(new Rectangle(-20, -20, 100, 100));
		try {
			helv = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI,
					BaseFont.NOT_EMBEDDED);
		} catch (Exception e) {
			throw new ExceptionConverter(e);
		}
	}

(helv ist ein BaseFont-Objekt)

Auf diese Weise wird in meinen Dokumenten eine Fußzeile eingefügt. Verwendet wurde iText 2.1.7
 
1. Beispiel (Ausschnitt) von Google:
Java:
/** Inner class to add a header and a footer. */
    static class HeaderFooter extends PdfPageEventHelper {

        public void onEndPage (PdfWriter writer, Document document) {
            Rectangle rect = writer.getBoxSize("art");
            switch(writer.getPageNumber() % 2) {
            case 0:
                ColumnText.showTextAligned(writer.getDirectContent(),
                        Element.ALIGN_RIGHT, new Phrase("even header"),
                        rect.getRight(), rect.getTop(), 0);
                break;
            case 1:
                ColumnText.showTextAligned(writer.getDirectContent(),
                        Element.ALIGN_LEFT, new Phrase("odd header"),
                        rect.getLeft(), rect.getTop(), 0);
                break;
            }
            ColumnText.showTextAligned(writer.getDirectContent(),
                    Element.ALIGN_CENTER, new Phrase(String.format("page %d", writer.getPageNumber())),
                    (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);
        }
    }
 
Bin auch kein itext Profi, aber beschäftige mich extensiv grad damit.
Ich plazier Text kreuz und quer mit....
[Java]
pdfdoc.open();
PdfContentByte canvas=writer.getDirectContent();//Kontrolle über dokument
canvas.beginText();
canvas.setFontAndSize(basefont, 18);//z.b
canvas.moveText(x, y);
canvas.showText(deinstring);
[/Java]
Bei moveText ist zu beachten, dass die Position relativ zum letzten Punkt ist, jedenfalls
bis du canvas.endText(); angibst. Dann hast Du wieder die Ursprungs Koordinaten (ich nutz da noch savestate, weis aber nicht obs das wirklich braucht. Ansonsten weiter mit...
[Java]
canvas.moveText(0, -20f);
canvas.showText("Bin ganz pep drunter ;-)");
canvas.endText();
[/Java]
Wie gesagt bin kein Profi, Angaben ohne Gewähr, wenn falsch bitte richtig stellen.
 

Neue Themen


Zurück
Oben