在Spire.Pdf命名空间下有一个PdfPageTemplateElement类,用于创建页眉\页脚,水印和印章模板。在该模板上创建好页眉页脚等信息后,即可应用到PDF文档,使现有的页面出现相应信息。
C#
static void Main(string[] args)
{
//创建PDF文档
PdfDocument doc = new PdfDocument();
//指定页面大小
doc.PageSettings.Size = PdfPageSize.A4;
//将页边距设置为0
doc.PageSettings.Margins = new PdfMargins(0);
//创建PdfMargins对象,指定期望设置的页边距
PdfMargins margins = new PdfMargins(40, 60, 40, 60);
//在文档模板的顶部和底部应用页眉页脚模板
doc.Template.Top = CreateHeaderTemplate(doc, margins);
doc.Template.Bottom = CreateFooterTemplate(doc, margins);
//在文档模板的左右部分应用空白模板
doc.Template.Left = new PdfPageTemplateElement(margins.Left, doc.PageSettings.Size.Height);
doc.Template.Right = new PdfPageTemplateElement(margins.Right, doc.PageSettings.Size.Height);
//在文档中添加两页并写入文字
PdfPageBase page1 = doc.Pages.Add();
PdfPageBase page2 = doc.Pages.Add();
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("华文楷体", 15f, FontStyle.Bold), true);
page1.Canvas.DrawString("正文开始的地方...", font, PdfBrushes.Black, 0, 0);
page2.Canvas.DrawString("正文开始的地方...", font, PdfBrushes.Black, 0, 0);
//保存文档
doc.SaveToFile("HeaderAndFooter.pdf");
}
//创建页眉模板
static PdfPageTemplateElement CreateHeaderTemplate(PdfDocument doc, PdfMargins margins)
{
//获取页面大小
SizeF pageSize = doc.PageSettings.Size;
//创建PdfPageTemplateElement对象headerSpace,即作页眉模板
PdfPageTemplateElement headerSpace = new PdfPageTemplateElement(pageSize.Width, margins.Top);
headerSpace.Foreground = false;
//声明x,y两个float型变量
float x = margins.Left;
float y = 0;
//在headerSpace中绘制图片
PdfImage headerImage = PdfImage.FromFile(@"C:\logo.png");
float width = headerImage.Width / 3;
float height = headerImage.Height / 3;
headerSpace.Graphics.DrawImage(headerImage, x, margins.Top - height - 2, width, height);
//在headerSpace中绘制线段
PdfPen pen = new PdfPen(PdfBrushes.Gray, 0.5f);
headerSpace.Graphics.DrawLine(pen, x, y + margins.Top - 2, pageSize.Width - x, y + margins.Top - 2);
//返回headerSpace
return headerSpace;
}
// 创建页脚模板
static PdfPageTemplateElement CreateFooterTemplate(PdfDocument doc, PdfMargins margins)
{
//获取页面大小
SizeF pageSize = doc.PageSettings.Size;
//创建PdfPageTemplateElement对象footerSpace,即页脚模板
PdfPageTemplateElement footerSpace = new PdfPageTemplateElement(pageSize.Width, margins.Bottom);
footerSpace.Foreground = false;
//声明x,y两个float型变量
float x = margins.Left;
float y = 0;
//在footerSpace中绘制线段
PdfPen pen = new PdfPen(PdfBrushes.Gray, 0.5f);
footerSpace.Graphics.DrawLine(pen, x, y, pageSize.Width - x, y);
//在footerSpace中绘制文字
y = y + 5;
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("黑体", 10f, FontStyle.Bold), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
String footerText = "成都冰蓝科技有限公司\n电话:028-81705109\n网址:http://www.e-iceblue.cn";
footerSpace.Graphics.DrawString(footerText, font, PdfBrushes.Black, x, y, format);
//在footerSpace中绘制当前页码和总页码
PdfPageNumberField number = new PdfPageNumberField();
PdfPageCountField count = new PdfPageCountField();
PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.Black, "第{0}页/共{1}页", number, count);
compositeField.StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top);
SizeF size = font.MeasureString(compositeField.Text);
compositeField.Bounds = new RectangleF(pageSize.Width - x - size.Width, y, size.Width, size.Height);
compositeField.Draw(footerSpace.Graphics);
//返回footerSpace
return footerSpace;
}
VB.NET
Private Shared Sub Main(args As String())
'创建PDF文档 Dim doc As New PdfDocument() '指定页面大小
doc.PageSettings.Size = PdfPageSize.A4
'将页边距设置为0 doc.PageSettings.Margins = New PdfMargins(0) '创建PdfMargins对象,指定期望设置的页边距
Dim margins As New PdfMargins(40, 60, 40, 60)
'在文档模板的顶部和底部应用页眉页脚模板 doc.Template.Top = CreateHeaderTemplate(doc,margins) doc.Template.Bottom = CreateFooterTemplate(doc,margins) '在文档模板的左右部分应用空白模板
doc.Template.Left = New PdfPageTemplateElement(margins.Left, doc.PageSettings.Size.Height)
doc.Template.Right = New PdfPageTemplateElement(margins.Right, doc.PageSettings.Size.Height)
'在文档中添加两页并写入文字 Dim page1 As PdfPageBase = doc.Pages.Add() Dim page2 As PdfPageBase = doc.Pages.Add() Dim font As New PdfTrueTypeFont(New Font("华文楷体",15F,FontStyle.Bold),True) page1.Canvas.DrawString("正文开始的地方...",font,PdfBrushes.Black,0,0) page2.Canvas.DrawString("正文开始的地方...",font,PdfBrushes.Black,0,0) '保存文档
doc.SaveToFile("HeaderAndFooter.pdf")
End Sub
'创建页眉模板 Private Shared Function CreateHeaderTemplate(doc As PdfDocument,margins As PdfMargins) As PdfPageTemplateElement '获取页面大小
Dim pageSize As SizeF = doc.PageSettings.Size
'创建PdfPageTemplateElement对象headerSpace,即作页眉模板 Dim headerSpace As New PdfPageTemplateElement(pageSize.Width,margins.Top) headerSpace.Foreground = False '声明x,y两个float型变量
Dim x As Single = margins.Left
Dim y As Single = 0
'在headerSpace中绘制图片 Dim headerImage As PdfImage = PdfImage.FromFile("C:\logo.png") Dim width As Single = headerImage.Width / 3 Dim height As Single = headerImage.Height / 3 headerSpace.Graphics.DrawImage(headerImage,x,margins.Top - height - 2,width,height) '在headerSpace中绘制线段
Dim pen As New PdfPen(PdfBrushes.Gray, 0.5F)
headerSpace.Graphics.DrawLine(pen, x, y + margins.Top - 2, pageSize.Width - x, y + margins.Top - 2)
'返回headerSpace Return headerSpace End Function ' 创建页脚模板
Private Shared Function CreateFooterTemplate(doc As PdfDocument, margins As PdfMargins) As PdfPageTemplateElement
'获取页面大小 Dim pageSize As SizeF = doc.PageSettings.Size '创建PdfPageTemplateElement对象footerSpace,即页脚模板
Dim footerSpace As New PdfPageTemplateElement(pageSize.Width, margins.Bottom)
footerSpace.Foreground = False
'声明x,y两个float型变量 Dim x As Single = margins.Left Dim y As Single = 0 '在footerSpace中绘制线段
Dim pen As New PdfPen(PdfBrushes.Gray, 0.5F)
footerSpace.Graphics.DrawLine(pen, x, y, pageSize.Width - x, y)
'在footerSpace中绘制文字 y = y + 5 Dim font As New PdfTrueTypeFont(New Font("黑体",10F,FontStyle.Bold),True) Dim format As New PdfStringFormat(PdfTextAlignment.Left) Dim footerText As [String] = "成都冰蓝科技有限公司" & vbLf & "电话:028-81705109" & vbLf & "网址:http://www.e-iceblue.cn" footerSpace.Graphics.DrawString(footerText,font,PdfBrushes.Black,x,y,format) '在footerSpace中绘制当前页码和总页码
Dim number As New PdfPageNumberField()
Dim count As New PdfPageCountField()
Dim compositeField As New PdfCompositeField(font, PdfBrushes.Black, "第{0}页/共{1}页", number, count)
compositeField.StringFormat = New PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top)
Dim size As SizeF = font.MeasureString(compositeField.Text)
compositeField.Bounds = New RectangleF(pageSize.Width - x - size.Width, y, size.Width, size.Height)
compositeField.Draw(footerSpace.Graphics)
'返回footerSpace Return footerSpace End Function