问题:为导出PDF设置页眉页脚,页眉带图标与文字。
话不多说,直接上代码:
1、Page事件触发,实例化CreatHeaderAndFoot类。
public static void Export()
{
string fileExportPath= Filepath+"//"+ DateTime.Now.ToString("yyyy_MM_dd") + ".pdf";
Document document = new Document(PageSize.A4, 80, 80, 70, 30);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(fileExportPath, FileMode.Create));
document.Open();
writer.PageEvent = new CreatHeaderAndFoot();
document.NewPage();
Paragraph date = new Paragraph(10, DateTime.Now.ToString("yyyy_MM_dd"), new Font(BF_Light, 13));
date.Alignment = Rectangle.ALIGN_RIGHT;
document.Add(date);
AddBody(document, bitmap);
document.Close();
writer.Close();
}
2、添加页眉页脚。
public class CreatHeaderAndFoot : PdfPageEventHelper, IPdfPageEvent
{
private static BaseFont BsFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//PDF中文使用,0代表宋体
public override void OnEndPage(PdfWriter writer, Document document)
{
base.OnEndPage(writer, document);
#region 一
string path = "../../Images/LOGO.jpg";//图片路径
Image img = Image.GetInstance(path);
//页眉
img.SetAbsolutePosition(80, 780); //图片位置
BaseColor bs = new BaseColor(237, 125, 49);
LineSeparator line = new LineSeparator(2f, -300, bs, Element.ALIGN_RIGHT, 30f);//下划线
PdfContentByte cbh = writer.DirectContent;
cbh.AddImage(img);
Phrase header = new Phrase(new Chunk(line));
ColumnText.ShowTextAligned(cbh, Element.ALIGN_RIGHT, header,
document.Right, document.Top, 0);
//页脚
Font fontfooter = new Font(BsFont, 10);
PdfContentByte cbs = writer.DirectContent;
cbs.SetCharacterSpacing(1.3f); //设置文字显示时的字间距
Phrase footer = new Phrase(writer.PageNumber.ToString(), fontfooter);
ColumnText.ShowTextAligned(cbs, Element.ALIGN_CENTER, footer,
document.Right / 2, document.Bottom, 0);
#endregion
}
}
3、截图如下: