C#/.NET 使用免费组件给PDF文档添加文本和图片页眉
如今PDF文档与Office文档一样成为了一种通用文档,在日常工作中我们经常会碰到需要给PDF文件添加页眉和页脚/页码等情况,如果你正好是喜欢编程的朋友,不妨看看本篇文章。本文主要介绍如何在C#/.NET应用程序中使用免费组件Free Spire.PDF给现有的PDF文档添加文本和图片页眉,当然它除了这个功能外也支持添加页脚及其他丰富的功能,免费版可以供商业或个人免费使用,感兴趣的朋友可以从这里直接下载使用该组件(无需注册)。
以下是详细步骤。
首先在visual studio中创建一个新的C#项目,添加对Spire.Pdf.dll的引用。
接下来定义一个静态方法SetDocumentTemplate(PdfDocumentdoc, SizeF pageSize, PdfMargins margin)来创建一个PDF文档模板,在该方法内调用DrawString(strings, PdfFontBase font, PdfBrush brush, float x, float y, PdfStringFormat format) 方法和DrawImage(PdfImageimage, float x, float y, float width, float height)方法向模板插入自定义的文本和图片页眉,具体位置及图片的大小可以自定义。
static voidSetDocumentTemplate(PdfDocument doc, SizeF pageSize, PdfMarginsmargin)
{
PdfPageTemplateElement topSpace = new PdfPageTemplateElement(pageSize.Width,margin.Top);
topSpace.Foreground= true;
doc.Template.Top =topSpace;
//添加文本页眉
PdfTrueTypeFont font = newPdfTrueTypeFont(newFont("ArialUnicode MS", 11f), true);
PdfStringFormat format = newPdfStringFormat(PdfTextAlignment.Right);
String text = "PDF页眉";
float x = PdfPageSize.A4.Width;
float y = 0;
topSpace.Graphics.DrawString(text,font, PdfBrushes.Black, x, y, format);
//添加图片页眉
PdfImage headerImage = PdfImage.FromFile(@"E:\Program Files\1.png");
float width = headerImage.Width;
float height = headerImage.Height;
topSpace.Graphics.DrawImage(headerImage,0, 0, width / 3, height / 4);
}
然后在主函数内调用该方法。
思路解析:
1.首先创建一个新的PDF文档,并把它所有的margin也就是页边距都设置为0。
PdfDocument doc = new PdfDocument();
doc.PageSettings.Margins.All = 0;
2.然后载入现有的需要添加页眉的PDF文档。
PdfDocument original = new PdfDocument();
original.LoadFromFile("示例.pdf");
3.调用以上方法,将以上模板应用到新建的PDF文档上。
SetDocumentTemplate(doc, PdfPageSize.A4,original.PageSettings.Margins);
4.遍历原始文档的每一页,向这个新文档添加与原始文档一致数量及大小的页面,然后将原始文档的每一页的内容画到新文档对应的每一页上。
PdfPageBase page = null;
foreach (PdfPageBaseorigianlPage in original.Pages)
{
page = doc.Pages.Add(newSizeF(origianlPage.Size.Width,origianlPage.Size.Height));
origianlPage.CreateTemplate().Draw(page, 0,-(original.PageSettings.Margins.Top));
}
5.最后保存文档。
doc.SaveToFile("页眉.pdf");
这是原始PDF文档:
运行结果:
全部代码如下:
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace 给PDF文档添加页眉
{
class Program
{
static void Main(string[] args)
{
PdfDocument doc = newPdfDocument();
doc.PageSettings.Margins.All = 0;
PdfDocument original = newPdfDocument();
original.LoadFromFile("示例.pdf");
SetDocumentTemplate(doc, PdfPageSize.A4,original.PageSettings.Margins);
PdfPageBasepage = null;
foreach (PdfPageBaseorigianlPage in original.Pages)
{
page = doc.Pages.Add(new SizeF(origianlPage.Size.Width,origianlPage.Size.Height));
origianlPage.CreateTemplate().Draw(page, 0,-(original.PageSettings.Margins.Top));
}
doc.SaveToFile("页眉.pdf");
System.Diagnostics.Process.Start("页眉.pdf");
}
static voidSetDocumentTemplate(PdfDocument doc, SizeF pageSize, PdfMarginsmargin)
{
PdfPageTemplateElement topSpace = new PdfPageTemplateElement(pageSize.Width,margin.Top);
topSpace.Foreground = true;
doc.Template.Top = topSpace;
PdfTrueTypeFont font = newPdfTrueTypeFont(newFont("ArialUnicode MS", 11f), true);
PdfStringFormat format = newPdfStringFormat(PdfTextAlignment.Right);
String text = "PDF页眉";
float x = PdfPageSize.A4.Width;
float y = 0;
topSpace.Graphics.DrawString(text, font, PdfBrushes.Black,x, y, format);
PdfImage headerImage = PdfImage.FromFile(@"E:\Program Files\1.png");
float width = headerImage.Width;
float height = headerImage.Height;
topSpace.Graphics.DrawImage(headerImage, 0, 0, width / 3, height / 4);
}
}
}