如何使用C#iText7在PDF生成中创建标题 [英] How to create Header in PDF generation using C# iText7

查看:589
本文介绍了如何使用C#iText7在PDF生成中创建标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用.NET C#中的iText包在PDF的所有页面中添加页眉,但无法正常工作。

I tried to add Header in all the pages of my PDF using iText package in .NET C#, but it's not working.


注意:我使用的是iText版本7

Note: I'm using iText version 7

我尝试了以下Stack Overflow答案,它们仅针对Footer进行了演示(即 END_PAGE )不适用于 START_PAGE

I tried the following Stack Overflow answers, they demonstrated only for Footer (i.e., END_PAGE) not for START_PAGE

  • Add Header and Footer for PDF using iTextsharp

我的代码

class Program {
    static void Main(string[] args) {

        var writer = new PdfWriter("E:/pdfSample/bala.pdf");
        var pdf = new PdfDocument(writer);
        var document = new Document(pdf,PageSize.A4);
        document.SetMargins(120,40,100,40);

        // Create a PdfFont
        var font = PdfFontFactory.CreateFont(StandardFonts.TIMES_ROMAN);

        List list = new List();

        // Add ListItem objects
        list.Add(new ListItem("Never gonna give you up"))
            .Add(new ListItem("Never gonna let you down"))    
            .Add(new ListItem("Never gonna run around and desert you"))
            .Add(new ListItem("Never gonna make you cry"))
            .Add(new ListItem("Never gonna say goodbye"))
            .Add(new ListItem("Never gonna tell a lie and hurt you"));
        // Add the list
        document.Add(list);

        // Add a Paragraph
        document.Add(new Paragraph("iText is:").SetFont(font));


        document.Add(logo);
        var tree = new Image(ImageDataFactory.CreateJpeg(new Uri("E:/pdfSample/RelatednessTree.jpg")));
        // document.Add(tree);

        pdf.AddEventHandler(PdfDocumentEvent.START_PAGE,new Paragraph("HEADER TEXT"));
        pdf.AddEventHandler(PdfDocumentEvent.END_PAGE,new Paragraph("FOOTER TEXT"));

        document.Close();

    }
}


public class TableFooter : IEventHandler {
    private Paragraph para;

    public TableFooter(Paragraph paraObj) {
        para = paraObj;
    }

    public void HandleEvent(Event @event) {
        PdfDocumentEvent docEvent = @event as PdfDocumentEvent;
        PdfDocument doc = docEvent.GetDocument();
        PdfPage page = docEvent.GetPage();
        PdfCanvas canvas = new PdfCanvas(page.NewContentStreamBefore(),page.GetResources(),doc);

        new Canvas(canvas,doc, new Rectangle(20, -20, page.GetPageSize().GetWidth() - 80,80)).Add(para);
    }
}

请协助我添加 Header (即 START_PAGE )以及在所有PDF页面中显示页眉所需的配置。

Kindly assist me how to add Header (i.e., START_PAGE) and whats the configuration is required to display the Header in all the PDF pages.

推荐答案

我在代码中创建了两个类,一个用于页眉,一个用于页脚,因此我将两个元素称为:

I created two classes in my code, one for header and one for footer, so i call the two elements like this:

pdf.AddEventHandler(PdfDocumentEvent.START_PAGE,new HeaderClass("HEADER TEXT"));
pdf.AddEventHandler(PdfDocumentEvent.END_PAGE,new FooterClass("FOOTER TEXT"));

在标题类的HandleEvent中,我更改了这一行:

In the HandleEvent for the header class i changed this line:

PdfCanvas canvas = new PdfCanvas(page.NewContentStreamBefore(),page.GetResources(),doc);

与此:

PdfCanvas canvas = new PdfCanvas(page.NewContentStreamAfter(),page.GetResources(),doc);

保留您编码的结构,但是,显然我更改了画布的页面坐标。

leaving the structure you have coded, but, obviously I changed the page coordinates of canvas.

这篇关于如何使用C#iText7在PDF生成中创建标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆