2012-04-03 8 views
1

Bitte geben Sie mir irgendeine Lösung; Ich verwende diesen Code:Wie Header-Bild in ITEXTSharp anwenden HTML zu PDF-Konverter

HeaderFooter header = new HeaderFooter(new Phrase("This is a header"), false); 
document.Header = header; 

aber dieser Fehler ist aufgetreten:

CS0246:
Der Typ oder Namespace-Name 'Header' konnte nicht gefunden werden (sind Sie eine using-Direktive oder ein fehlt Montage Referenz?

Antwort

1

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(); 
     } 
    } 
} 
+0

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. –

+0

@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. –

+0

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. –