【发布时间】:2019-03-22 03:28:21
【问题描述】:
我尝试使用 .NET C# 中的 iText 包在我的 PDF 的所有页面中添加页眉,但它不起作用。
注意:我使用的是 iText 版本 7
我尝试了以下 Stack Overflow 答案,它们仅针对页脚(即 END_PAGE)演示,而不针对 START_PAGE
我的代码:
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 页面中显示 Header 所需的配置。
【问题讨论】:
-
您对
START_PAGE和END_PAGE所代表的含义感到困惑。它们不代表内容的位置,而是触发相关IEventHandler的时间。即START_PAGE在新页面启动时触发,END_PAGE在页面被填满时触发(有一些变化)。此矩形构造函数中的坐标 -Rectangle(20,20,page.GetPageSize().GetWidth() - 80,80)- 确定内容的放置位置,因此将其可视化为页眉或页脚。 -
Sreedharan - 你用@Jon 的评论解决了这个问题吗?他本可以给出答案而不是评论,因为这是解决问题所需的全部知识。
标签: .net itext pdf-generation c#-2.0 itext7