iTextSharp -使用PdfPageEventHelper生成多个PDF文档的页眉和页脚

本文关键字:文档 PDF 使用 PdfPageEventHelper iTextSharp | 更新日期: 2023-09-27 18:04:34

我发现了这篇文章:https://stackoverflow.com/a/19004392/2430797,它说明了如何使用页面事件与iTextSharp生成页眉和页脚的例子。我想对这个例子进行扩展,在我的应用程序中创建一个泛型类来生成所有PDF文档的页眉和页脚。但是,每个文档都必须在其页眉中显示自己的文档标题,在其页脚中显示自己的文档版本。这意味着我需要使用这个类来为每个PDF文档创建具有不同页眉文本和页脚文本的页眉。

我在相应示例的类中看到以下声明:

    public string Header
    {
        get { return _header; }
        set { _header = value; }
    }

然而,我不能成功地调用它使用"CreatePDF()"的例子张贴。

有人能帮帮我吗?多谢。

iTextSharp -使用PdfPageEventHelper生成多个PDF文档的页眉和页脚

在您提到的示例中,您有一个类ITextEvents,它是这样使用的:

pdfWriter.PageEvent = new Common.ITextEvents();

这很奇怪,因为这样既不设置头信息,也不能设置头信息。

您需要像这样创建一个ITextEvents实例:

Common.ITextEvents event = new Common.ITextEvents();
event.Header = "My custom header";
pdfWriter.PageEvent = event;

当你创建文档的时候,你可以改变标题,如果你不希望每个页面都有相同的标题。

重要:

您引用的示例有许多缺陷。例如,它添加这样的文本:
cb.BeginText();
cb.SetFontAndSize(bf, 12);
cb.SetTextMatrix(
    document.PageSize.GetRight(200), document.PageSize.GetTop(45));
cb.ShowText(header);
cb.EndText();

您确定要添加这样的文本吗?这个代码片段可以工作,但它只适用于PDF专家。

我想你更愿意把这六行精简成这样:

Phrase text = new Phrase(header);
ColumnText.ShowTextAligned(cb, Element.ALIGN_LEFT, text,
    document.PageSize.GetRight(200), document.PageSize.GetTop(45), 0);

理解ShowTextAligned()方法比理解BeginText()SetFontAndSize()SetTextMatrix()ShowText()EndText()等文本图形方法要容易得多。

我为你担心,因为你似乎正在复制/粘贴别人的代码,而不知道你在做什么。我强烈建议您阅读官方网站上提供的一些文档。如果你刚开始使用iText,你可能也应该开始使用itext7,而不是iTextSharp 5。