ITextSharp中的页眉和页脚
我知道这个问题已被问了一千次,但我还没有找到一个直截了当的答案。 我对ITextSharp比较陌生,所以请解释好像你和一个小孩说话。 如何在我正在创建的文档中添加一个简单的文本页眉和页脚?
我正在使用以下代码创建一个简单的pdf文档:
void Button1Click(object sender, EventArgs e) { Document doc = new Document(iTextSharp.text.PageSize.LEDGER, 10, 10, 42, 35); PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(@"File Path", FileMode.Create)); doc.Open(); Paragraph par1 = new Paragraph("Hello World!"); doc.Add(par1); //Code to add header/footer doc.Close(); MessageBox.Show("Your PDF has been created!"); }
我已经做了很多关于如何添加页眉和页脚的研究,但它们都与复杂的页面事件有关。 有没有更简单的方法? 如果没有,你能一步一步地完成整个过程吗? 我非常感谢你们所能给予的任何帮助。 谢谢!
您正在创建这样的Document
:
Document doc = new Document(iTextSharp.text.PageSize.LEDGER, 10, 10, 42, 35);
这意味着您有42个用户单位的上边距和35个用户单位的下边距。 您可以使用此边距在页面事件中添加额外内容。
官方网站有很多例子和全面的问答部分。 所有示例和答案都被标记。 如果单击标题标记,可以找到大量示例。
正如评论中其他人已经指出的那样,您需要创建一个PdfPageEvent
实现。 最简单的方法是扩展PdfPageEventHelper
类。
class MyHeaderFooterEvent : PdfPageEventHelper { Font FONT = new Font(Font.FontFamily.HELVETICA, 18, Font.BOLD); public override void OnEndPage(PdfWriter writer, Document document) { PdfContentByte canvas = writer.DirectContent; ColumnText.ShowTextAligned( canvas, Element.ALIGN_LEFT, new Phrase("Header", FONT), 10, 810, 0 ); ColumnText.ShowTextAligned( canvas, Element.ALIGN_LEFT, new Phrase("Footer", FONT), 10, 10, 0 ); } }
重要的是要知道:
如果检查MyHeaderFooterEvent
类中的OnEndPage()
方法,您会看到我们从MyHeaderFooterEvent
获取DirectContent
,并且我们使用ShowTextAligned
方法向此canvas
添加内容。 还有许多其他方法可以添加内容,但您明确要求最简单的方法。 这种方式有其局限性,但很容易。
我使用了几个硬编码值:我使用10
作为页眉和页脚的x
值。 那是因为您定义了10个用户单位的左边距。 页眉和页脚与您要添加到页面的实际内容保持对齐。 我使用810
作为标题的y
值,因为您正在创建一个顶部边距为42的A4页面。页面的顶部y
坐标是842.顶部边距的顶部y
坐标是842 – 42 = 800。我添加了10个用户单元,这样您的标题就不会粘贴到实际内容上。 页面的底部y
坐标在您的情况下为0,边距的底部y
坐标在35中。我使用10
作为页脚的基线。
您创建了wri
并在创建此PdfWriter
实例后立即打开了Document
实例。 要使页面事件生效,您应该在打开Document
之前添加以下链接:
wri.PageEvent = new MyHeaderFooterEvent();
现在每次主进程完成页面时都会调用OnEndPage()
方法。
重要提示:您添加了//Code to add header/footer
在不正确的位置//Code to add header/footer
。 iTextSharp将尝试尽快刷新页面内容。 如果在添加内容后添加代码以添加页眉/页脚,则无法返回向已刷新到输出流的页面添加页眉和页脚。
上述就是C#学习教程:ITextSharp中的页眉和页脚分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005268.html