gpt4 book ai didi

c# - 如何在 C# 中使用 iText 向 PDF 文件添加页眉?

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:08 25 4
gpt4 key购买 nike

我正在尝试使用 iText 创建 PDF。我正在尝试添加一个将出现在每个页面上的标题,但我想添加一些文本,例如每个页面都不同的报告名称。我怎么解决这个问题?如果你不明白我想问什么,请看下面的例子:

在第 1 页

Report Name: Test ReportEmp_id  Emp_Name  Emp_sal -----    -----      -----------    -----      -----------    -----      ------

在第 2 页

Emp_id  Emp_Name  Emp_sal -----    -----      -----------    -----      -----------    -----      ------

注意:在第2页中,“报告名称”不重复。

最佳答案

在 iText 5 中,您可以使用页面事件创建自定义标题。

using System.Collections.Generic;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace PDFLib.PageEvents
{
public class CustomPageEvent : PdfPageEventHelper
{
private int _page;
private readonly Rectangle _marges;
private string _text;

private static readonly Font FontHf = FontFactory.GetFont(FontFactory.HELVETICA_OBLIQUE, 9);

private readonly Dictionary<int, float> _posicions;

public CustomPageEvent(string text){
_text = text;
_marges = new Rectangle(10, 10, _pageSize.Width - 20, _pageSize.Height - 20);
_posicions = new Dictionary<int, float>
{
{Element.ALIGN_LEFT, _marges.Left + 10},
{Element.ALIGN_RIGHT, _marges.Right - 10},
{Element.ALIGN_CENTER, (_marges.Left + _marges.Right)/2}
};
}

public override void OnStartPage(PdfWriter writer, Document document)
{
_page++;

base.OnStartPage(writer, document);
}

public override void OnOpenDocument(PdfWriter writer, Document document)
{
_page = 0;
}

public override void OnEndPage(PdfWriter writer, Document document)
{
if (page==1)
ColumnText.ShowTextAligned(writer.DirectContent, Element.ALIGN_CENTER, new Phrase(string.Format("{0}", _text), FontHf), _posicions[Element.ALIGN_CENTER], _marges.Top-10, 0);

base.OnEndPage(writer,document);
}

}
}

是这样的。它可以简化,因为我从一个页面事件中提取了它,该事件做了更多的事情,如添加水印和自定义页眉和页脚。

关于c# - 如何在 C# 中使用 iText 向 PDF 文件添加页眉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4553220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com