2010-03-17 4 views
1

Je me demande comment puis-je mettre un en-tête dans mon fichier PDF, parce que je l'ai essayé les tutoriels d'ici:iTextSharp dans VB.NET

http://itextsharp.sourceforge.net/tutorial/ch04.html

Et il n'a pas fonctionné .

Je l'ai fait:

Dim head As New HeaderFooter(New Phrase("This is page: "), False) 
head.Border = Rectangle.NO_BORDER 
document.Header = head 

Mais VS2008 dit que HeaderFooter n'est pas défini (ligne 1), et Footer it's not a member of "iTextSharp.text.document" (line 3).

Je l'ai déjà inclus les importations au début de mon code et iIdon't ont d'autres problèmes avec les iTextsharps (je veux dire qu'il travaille en dehors du problème d'en-tête):

Imports iTextSharp.text 
Imports iTextSharp.text.pdf 
Imports System.Data.SQLite 
Imports System.IO 

Alors s'il vous plaît, quelqu'un peut-il explai n à moi comment puis-je définir un en-tête pour mes pages?

Cordialement

Répondre

5

La réponse à cette question dépend de la version de la dll iTextSharp que vous utilisez.

Si vous utilisez une version inférieure à 5, cela devrait fonctionner

Imports iTextSharp.text.pdf 
Imports iTextSharp.text 
Module Module1 
    Sub Main() 
     Dim pdfWrite As PdfWriter 
     Dim pdfDoc As New Document() 
     Dim pdfMemoryStream As New IO.FileStream("tryme.pdf", IO.FileMode.Create) 
     pdfWrite = PdfWriter.GetInstance(pdfDoc, pdfMemoryStream) 
     Dim pdfHeader As New HeaderFooter(New Phrase("Im at the head: "), False) 
     pdfHeader.Border = Rectangle.NO_BORDER 
     pdfDoc.Header = pdfHeader 
     pdfDoc.Open() 
     pdfDoc.Add(New Paragraph("Hello World")) 
     pdfDoc.NewPage() 
     pdfDoc.Add(New Paragraph("Hello World Again")) 
     pdfDoc.Close() 
    End Sub 
End Module 

Mise à jour

Pour la version 5+ de iTextSharp la propriété HeaderFooter a été retiré de iTextSharp. Pour ajouter des en-têtes/pieds de page, vous devez utiliser PageEvents. Le code suivant montre comment faire ceci (tout simplement!)

Imports iTextSharp.text.pdf 
Imports iTextSharp.text 
Imports System.IO 
Module Module1 
    Sub Main() 
     Dim pdfDoc As New Document() 
     Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(pdfDoc, New FileStream("tryme2.pdf", FileMode.Create)) 
     Dim ev As New itsEvents 
     pdfWrite.PageEvent = ev 
     pdfDoc.Open() 
     pdfDoc.Add(New Paragraph("Hello World")) 
     pdfDoc.NewPage() 
     pdfDoc.Add(New Paragraph("Hello World Again")) 
     pdfDoc.Close() 
    End Sub 
End Module 

Public Class itsEvents 
    Inherits PdfPageEventHelper 
    Public Overrides Sub OnStartPage(ByVal writer As iTextSharp.text.pdf.PdfWriter, ByVal document As iTextSharp.text.Document) 
     Dim ch As New Chunk("This is my Stack Overflow Header on page " & writer.PageNumber) 
     document.Add(ch) 
    End Sub 
End Class 
+0

Je pense qu'ils ont supprimé les en-têtes/pieds de page dans la version 5 car ils étaient restrictifs en ce sens que vous ne pouviez pas ajouter beaucoup plus que des blocs de texte de base. En utilisant l'événement OnStartPage, vous devriez être en mesure d'ajouter tout ce que vous voulez dans le document. – CResults

+0

'Classe publique itsEvents hérite de PdfPageEventHelper Public Overrides Sub OnStartPage (ByVal writer comme iTextSharp.text.pdf.PdfWriter, document ByVal comme iTextSharp.text.Document) Dim ch en tant que nouveau bloc (" Ceci est mon en-tête de débordement de pile sur la page "& writer .PageNumber) document.Add (ch) End Sub End Class 'cette méthode ne marche pas, si les pdf ont plus d'une page, les en-têtes se déplacent vers le bas et au-dessus du corps du rapport. –