【问题标题】:Adding headers with iTextSharp in VB.NET在 VB.NET 中使用 iTextSharp 添加标题
【发布时间】:2010-03-17 00:31:35
【问题描述】:

我想知道如何在我的 PDF 文件中添加标题,因为我已经尝试过这里的教程:

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

它并没有奏效。

我已经这样做了:

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

但是 VS2008 说 HeaderFooter 没有定义(第 1 行),而 Footer it's not a member of "iTextSharp.text.document" (line 3).

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

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

请问,谁能给我解释一下如何为我的页面设置页眉?

问候

【问题讨论】:

    标签: vb.net pdf header itextsharp


    【解决方案1】:

    这个问题的答案取决于您使用的 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+ 版本,已从 iTextSharp 中删除 HeaderFooter 属性。现在要添加页眉/页脚,您必须使用 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 事件,您应该能够将任何您想要的内容添加到文档中。
    • 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 这个方法不起作用,如果 pdf 有超过 1 页,标题会向下移动到报告正文上方。
    猜你喜欢
    • 2018-05-25
    • 2011-05-22
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2020-10-10
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多