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

时间:2016-08-28 00:57:38

标签: c# pdf itext

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

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

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

但是,我无法使用发布的“CreatePDF()”示例成功调用它。

有人可以帮忙吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

在您所引用的示例中,您有一个类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()

我很担心你,因为你似乎在不知道自己在做什么的情况下从别人那里复制/粘贴代码。我强烈建议您阅读the official web site上提供的一些文档。如果您刚开始使用iText,您可能也应该开始使用iText 7 for C#而不是iTextSharp 5.