【问题标题】:iTextSharp - using PdfPageEventHelper to generate headers and footers for multiple PDF documentsiTextSharp - 使用 PdfPageEventHelper 为多个 PDF 文档生成页眉和页脚
【发布时间】:2016-08-28 00:57:37
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# pdf itext


    【解决方案1】:

    在您引用的示例中,您有一个 ITextEvents 类,其用法如下:

    pdfWriter.PageEvent = new Common.ITextEvents();
    

    这很奇怪,因为这种方式,没有设置header,也无法设置。

    您需要像这样创建一个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();
    

    您确定要添加这样的文字吗?此代码 sn-p 有效,但仅适用于 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。

    【讨论】:

    • iText 7 的 .NET 代码示例已于上周五完成,只是尚未向公众发布,我们将在今天发布。
    • @user2430797 Samuel 所说的对于 iText 7 来说是正确的。如果您使用 iText 5,您会发现“iText in Action - Second Edition”一书的所有示例都可以通过 cs 获得每章示例页面底部的文件。您还会发现 FAQ 中的许多答案都使用 C# 代码。 iText for Java 与 iText for C# 保持同步。每个开发人员都可以轻松地在这两种语言之间切换。
    猜你喜欢
    • 1970-01-01
    • 2013-09-30
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    相关资源
    最近更新 更多