概述
页眉页脚是一篇完整、精致的文档的重要组成部分。在页眉页脚处,可以呈现的内容很多,如公司名称、页码、工作表名、日期、图片,如logo、标记等。在之前的文章中介绍了如何通过新建一页空白PDF页来添加页眉到该页面,包括文字页面、图片页眉。但是在实际应用中,该方法会有一定局限性,通过测试,下面将介绍C#给现有的PDF文档添加页眉页脚的方法。该方法中,丰富了我们对于添加页眉页脚的内容形式,包括添加图片、文字、超链接、页码等。
使用工具
注:下载该类库后,注意在程序中添加引用Spire.Pdf.dll(dll文件可在安装路径下的Bin文件夹中获取)
C# 代码步骤(供参考)
步骤 1 :添加using指令
步骤 2 :加载测试文档
//实例化PdfDocument类,加载测试文档 PdfDocument existingPdf = new PdfDocument(); existingPdf.LoadFromFile("Test.pdf");
步骤 3 :添加页眉页脚
调用DrawHeader()方法在现有文档添加页眉 DrawHeader(existingPdf); 调用DrawFooter()方法在现有文档添加页脚 DrawFooter(existingPdf);
在页面上方空白部位绘制页眉 static void DrawHeader(PdfDocument doc) { 获取页面大小 Sizef pageSize = doc.Pages[0].Size; 声明x,y两个float型变量 float x = 90; float y = 20; for (int i = 0; i < doc.Pages.Count; i++) { 在每一页的指定位置绘制图片 PdfImage headerImage = PdfImage.FromFile(logo.png"); float width = headerImage.Width / 7; float height = headerImage.Height / ; doc.Pages[i].Canvas.DrawImage(headerImage,x,y,width,height); 在每一页的指定位置绘制横线 PdfPen pen = new PdfPen(PdfBrushes.Gray,0.5f); doc.Pages[i].Canvas.DrawLine(pen,y + height + 2,pageSize.Width - x,y + height + 2); } }
在页面下方空白部位绘制页脚 DrawFooter(PdfDocument doc) { float y = pageSize.Height - 72 x,y); 在每一页的指定位置绘制文字 y = y + 5; PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(黑体",10f,FontStyle.Bold),true); PdfStringFormat format = PdfStringFormat(PdfTextAlignment.Left); String footerText = Website\n https://g20.org/; doc.Pages[i].Canvas.DrawString(footerText,font,PdfBrushes.Black,format); 在每一页的指定位置当前页码和总页码 pdfpageNumberField number = pdfpageNumberField(); pdfpageCountField count = pdfpageCountField(); PdfCompositeField compositeField = new PdfCompositeField(font,1)">{0}/{1},number,count); compositeField.StringFormat = PdfStringFormat(PdfTextAlignment.Right,PdfVerticalAlignment.Top); Sizef size = font.MeasureString(compositeField.Text); compositeField.Bounds = new RectangleF(pageSize.Width - x - size.Width,size.Width,size.Height); compositeField.Draw(doc.Pages[i].Canvas); } }
步骤 4 :保存文档
全部代码:
System.Drawing; namespace Pdfheader { class Program { void Main(string[] args) { 加载一个测试文档 PdfDocument existingPdf = PdfDocument(); existingPdf.LoadFromFile(); DrawHeader(existingPdf); 调用DrawFooter()方法在现有文档添加页脚 DrawFooter(existingPdf); 保存并打开文档 existingPdf.SavetoFile(); System.Diagnostics.Process.Start(); } 在页面上方空白部位绘制页眉 DrawHeader(PdfDocument doc) { 获取页面大小 Sizef pageSize = doc.Pages[].Size; ; ; ) { 在每一页的指定位置绘制图片 PdfImage headerImage = PdfImage.FromFile(); ; ; doc.Pages[i].Canvas.DrawImage(headerImage,height); 在每一页的指定位置绘制横线 PdfPen pen = ); doc.Pages[i].Canvas.DrawLine(pen,1)">); } } 在页面下方空白部位绘制页脚 DrawFooter(PdfDocument doc) { 在每一页的指定位置绘制文字 y = y + ; PdfTrueTypeFont font = ); PdfStringFormat format = PdfStringFormat(PdfTextAlignment.Left); String footerText = ; doc.Pages[i].Canvas.DrawString(footerText,format); 在每一页的指定位置当前页码和总页码 pdfpageNumberField number = pdfpageNumberField(); pdfpageCountField count = pdfpageCountField(); PdfCompositeField compositeField = zef size = font.MeasureString(compositeField.Text); compositeField.Bounds = View Code
总结
相较于上篇文章中的添加页眉的方法,本方法在处理现有的PDF文档中更具实用性。当然,两种方法针对不同的程序设计需要,满足不同的需求,我们在选择这两种方法时,可酌情而定。
(本文完)
如需转载,请注明出处。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。