在VB.NET中使用iTextSharp添加标题

在VB.NET中使用iTextSharp添加标题,vb.net,pdf,header,itextsharp,Vb.net,Pdf,Header,Itextsharp,我想知道如何在PDF文件中添加标题,因为我已经尝试了以下教程: 但它并没有奏效 我已经做到了: Dim head As New HeaderFooter(New Phrase("This is page: "), False) head.Border = Rectangle.NO_BORDER document.Header = head 但是VS2008说HeaderFooter不是第1行定义的,Footer不是iTextSharp.text.document第3行的成员 我已经在代码的开头

我想知道如何在PDF文件中添加标题,因为我已经尝试了以下教程:

但它并没有奏效

我已经做到了:

Dim head As New HeaderFooter(New Phrase("This is page: "), False)
head.Border = Rectangle.NO_BORDER
document.Header = head
但是VS2008说HeaderFooter不是第1行定义的,Footer不是iTextSharp.text.document第3行的成员

我已经在代码的开头包含了导入,我没有任何其他关于iTextsharps的问题,我的意思是,它与标题问题无关:

Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.Data.SQLite
Imports System.IO
那么,有谁能解释一下,我如何为我的页面设置标题


关于

此问题的答案取决于您使用的iTextSharp dll的版本

如果您使用的是低于5的版本,这应该可以工作

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
更新

对于iTextSharp的5+版本,HeaderFooter属性已从iTextSharp中删除。要立即添加页眉/页脚,必须使用PageEvents。下面的代码演示了如何非常简单地执行此操作

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

这个问题的答案取决于您使用的是哪个版本的iTextSharp dll

如果您使用的是低于5的版本,这应该可以工作

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
更新

对于iTextSharp的5+版本,HeaderFooter属性已从iTextSharp中删除。要立即添加页眉/页脚,必须使用PageEvents。下面的代码演示了如何非常简单地执行此操作

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

我认为他们在v5中删除了页眉/页脚,因为它们的限制性在于,除了基本的文本块之外,您无法添加更多的内容。使用OnStartPage事件,您应该能够向文档中添加任何您想要的内容。公共类itsEvents继承PdfPageEventHelper公共重写子OnStartPageByVal编写器作为iTextSharp.text.pdf.PdfWriter,ByVal文档作为iTextSharp.text.document Dim ch作为New chunk这是我在page&writer.PageNumber文档上的堆栈溢出头。Addch End子结束类此方法不起作用,如果pdf有超过1页,则页眉会向下移动并覆盖报告正文。我认为在v5中,它们会删除页眉/页脚,因为它们的限制性在于,除了基本的文本块之外,您无法添加更多的页眉/页脚。使用OnStartPage事件,您应该能够向文档中添加任何您想要的内容。公共类itsEvents继承PdfPageEventHelper公共重写子OnStartPageByVal编写器作为iTextSharp.text.pdf.PdfWriter,ByVal文档作为iTextSharp.text.document Dim ch作为New chunk这是我在page&writer.PageNumber文档上的堆栈溢出标题。Addch End子结尾类此方法不起作用,如果pdf有多个页面,则标题会在报告正文上向下移动。