Dieser Code war deprecated and removed many years ago aber immer noch lebt leider in den Kommentaren im Quellcode auf.
Was Sie tun möchten, ist eine Unterklasse der iTextSharp.text.pdf.PdfPageEventHelper
Klasse und behandeln die OnEndPage
Methode, die für jede Seite in Ihrem Dokument einmal aufgerufen wird erhalten:
public class MyPageEventHandler : iTextSharp.text.pdf.PdfPageEventHelper {
public override void OnEndPage(PdfWriter writer, Document document) {
//Create a simple ColumnText object
var CT = new ColumnText(writer.DirectContent);
//Bind it to the top of the document but take up the entire page width
CT.SetSimpleColumn(0, document.PageSize.Height - 20, document.PageSize.Width, document.PageSize.Height);
//Add some text
CT.AddText(new Phrase("This is a test"));
//Draw our ColumnText object
CT.Go();
}
}
diese nutzen zu können, einfach eine neue Instanz davon binden an Ihre PdfWriter
‚s PageEvent
Eigenschaft:
writer.PageEvent = new MyPageEventHandler();
Unten finden Sie eine voll funktions C# 2010 WinForms App Targeting iTextSharp 5.1.2.0, dass dies zeigt:
using System;
using System.IO;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
//Test file to create
string outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf");
//Standard PDF file stream creation
using (FileStream output = new FileStream(outputFile, FileMode.Create,FileAccess.Write,FileShare.None)){
using (Document document = new Document(PageSize.LETTER)) {
using (PdfWriter writer = PdfWriter.GetInstance(document, output)) {
//Bind our custom event handler to the PdfWriter
writer.PageEvent = new MyPageEventHandler();
//Open our PDF for writing
document.Open();
//Add some text to page 1
document.Add(new Paragraph("This is page 1"));
//Add a new page
document.NewPage();
//Add some text to page 2
document.Add(new Paragraph("This is page 2"));
//Close the PDF
document.Close();
}
}
}
this.Close();
}
}
public class MyPageEventHandler : iTextSharp.text.pdf.PdfPageEventHelper {
public override void OnEndPage(PdfWriter writer, Document document) {
//Create a simple ColumnText object
var CT = new ColumnText(writer.DirectContent);
//Bind it to the top of the document but take up the entire page width
CT.SetSimpleColumn(0, document.PageSize.Height - 20, document.PageSize.Width, document.PageSize.Height);
//Add some text
CT.AddText(new Phrase("This is a test"));
//Draw our ColumnText object
CT.Go();
}
}
}
Wie verwenden wir den PageEventHandler, um HTML an den Anfang der Datei hinzuzufügen. Das CSS ist zu restriktiv, um eine relative Positionierung zu ermöglichen. –
@DanielCasserly, würde Ihr Kommentar besser beantwortet werden, wenn es als eine dedizierte Frage einschließlich was Sie versucht haben, was funktioniert, was nicht funktioniert, was Sie erwarten, usw. usw. Außerdem, bitte denken Sie daran, dass iText nicht behandelt HTML in irgendeiner Weise. Es gibt eine Hilfsbibliothek von iText, die HTML-Zeichenketten in PDF-Objekte umwandelt, wenn dies möglich ist, aber diese sind immer noch PDF-Objekte. –
danke dafür, tatsächlich habe ich gefunden, was ich mit der OnStartPage override-Methode in der gleichen Klasse gesucht (mit der XMLWorkerHelper-Analyse). Danke trotzdem. –