2016-09-20 3 views
0

Ich versuche, eine Fußzeile auf jeder Seite eines PDF-Dokuments hinzuzufügen. Ich möchte einen Namen und das aktuelle Datum haben. Ich verwende diesen Code, aber es druckt nur auf der letzten Seite. Ich brauche es auf jeder Seite. Was fehlt mir hier?Fußzeile in pdf mit iTextSharp

+0

Bitte zeigen Sie ein bisschen mehr von Ihrem Code. –

+0

Wenn Sie iText7 verwenden, sehen Sie sich http://developers.itextpdf.com/node/3259 an. –

+0

Und wenn Sie iText5 verwenden, sollte dies einige Hinweise enthalten: http://developers.itextpdf.com/question/how-add-html-headers-and-footers-page –

Antwort

2

Ich schaffe es, dies zu tun. In meiner Klasse, die die PDF erstellen, füge ich diese Zeile hinzu.

pdfWriter.PageEvent = new PDFFooter(); 

und ich schuf eine andere Klasse namens PDFFooter.

public class PDFFooter : PdfPageEventHelper 
    { 
     // write on top of document 
     public override void OnOpenDocument(PdfWriter writer, Document document) 
     { 
      base.OnOpenDocument(writer, document); 
      PdfPTable tabFot = new PdfPTable(new float[] { 1F }); 
      tabFot.SpacingAfter = 10F; 
      PdfPCell cell; 
      tabFot.TotalWidth = 300F; 
      cell = new PdfPCell(new Phrase("")); 
      cell.Border = Rectangle.NO_BORDER; 
      tabFot.AddCell(cell); 
      tabFot.WriteSelectedRows(0, -1, 150, document.Top, writer.DirectContent); 
     } 

     // write on start of each page 
     public override void OnStartPage(PdfWriter writer, Document document) 
     { 
      base.OnStartPage(writer, document); 
     } 

     // write on end of each page 
     public override void OnEndPage(PdfWriter writer, Document document) 
     { 
      DateTime horario = DateTime.Now; 
      base.OnEndPage(writer, document); 
      PdfPTable tabFot = new PdfPTable(new float[] { 1F }); 
      PdfPCell cell; 
      tabFot.TotalWidth = 300F; 
      cell = new PdfPCell(new Phrase("TEST"+" - " + horario)); 
      cell.Border = Rectangle.NO_BORDER; 
      cell.HorizontalAlignment = Element.ALIGN_CENTER; 
      tabFot.AddCell(cell); 
      tabFot.WriteSelectedRows(0, -1, 150, document.Bottom, writer.DirectContent); 
     } 

     //write on close of document 
     public override void OnCloseDocument(PdfWriter writer, Document document) 
     { 
      base.OnCloseDocument(writer, document); 
     } 
    } 
} 
+0

Erstaunliche Lösung !!! Danke, es funktioniert Wunder – Patrick