我在文档中添加了headere和footer。
为此,我使用了覆盖OnOpenDocument
,OnStartPage
和OnEndPage
。
正常工作,但添加了一个空白页面,以headere和footer启动我的文档。 这段代码:
Misc.Override.pdfPage PageEventHandler = new Misc.Override.pdfPage();
writer.PageEvent = PageEventHandler;
document.Open();
public override void OnOpenDocument(PdfWriter writer,Document document) { 尝试 { // PrintTime = DateTime.Now; bf = BaseFont.CreateFont(BaseFont.HELVETICA,BaseFont.CP1252,BaseFont.NOT_EMBEDDED); cb = writer.DirectContent; template = cb.CreateTemplate(50,50); } catch(DocumentException de) { } catch(System.IO.IOException ioe) { } }
public override void OnStartPage(PdfWriter writer, Document document)
{
try
{
base.OnStartPage(writer, document);
Rectangle pageSize = document.PageSize;
if (Title != string.Empty)
{
cb.BeginText();
cb.SetFontAndSize(bf, 15);
cb.SetRGBColorFill(50, 50, 200);
cb.SetTextMatrix(pageSize.GetLeft(40), pageSize.GetTop(40));
cb.ShowText(Title);
cb.EndText();
}
if (HeaderLeft + HeaderRight != string.Empty)
{
PdfPTable HeaderTable = new PdfPTable(2);
HeaderTable.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;
HeaderTable.TotalWidth = pageSize.Width - 80;
HeaderTable.SetWidthPercentage(new float[] { 45, 45 }, pageSize);
PdfPCell HeaderLeftCell = new PdfPCell(new Phrase(8, HeaderLeft, HeaderFont));
HeaderLeftCell.Padding = 5;
HeaderLeftCell.PaddingBottom = 8;
HeaderLeftCell.BorderWidthRight = 0;
HeaderTable.AddCell(HeaderLeftCell);
PdfPCell HeaderRightCell = new PdfPCell(new Phrase(8, HeaderRight, HeaderFont));
HeaderRightCell.HorizontalAlignment = PdfPCell.ALIGN_RIGHT;
HeaderRightCell.Padding = 5;
HeaderRightCell.PaddingBottom = 8;
HeaderRightCell.BorderWidthLeft = 0;
HeaderTable.AddCell(HeaderRightCell);
cb.SetRGBColorFill(0, 0, 0);
HeaderTable.WriteSelectedRows(0, -1, pageSize.GetLeft(40), pageSize.GetTop(50), cb);
}
}
catch
{ throw; }
}
public override void OnEndPage(PdfWriter writer, Document document)
{
base.OnEndPage(writer, document);
int pageN = writer.PageNumber;
String text = "Pagina " + pageN + " di ";
float len = bf.GetWidthPoint(text, 8);
Rectangle pageSize = document.PageSize;
cb.SetRGBColorFill(100, 100, 100);
cb.BeginText();
cb.SetFontAndSize(bf, 8);
cb.SetTextMatrix(pageSize.GetLeft(pageSize.Width - 70), pageSize.GetBottom(20));
cb.ShowText(text);
cb.EndText();
cb.AddTemplate(template, pageSize.GetLeft(pageSize.Width - 70) + len, pageSize.GetBottom(20));
cb.BeginText();
cb.SetFontAndSize(bf, 8);
cb.EndText();
}
public override void OnCloseDocument(PdfWriter writer, Document document)
{
template = cb.CreateTemplate(50, 50);
base.OnCloseDocument(writer, document);
template.BeginText();
template.SetFontAndSize(bf, 8);
template.SetTextMatrix(0, 0);
template.ShowText("" + (writer.PageNumber - 1));
template.EndText();
}