itextsharp PageEvent和OnStartPage

时间:2015-05-15 15:24:05

标签: css itextsharp

我在文档中添加了headere和footer。 为此,我使用了覆盖OnOpenDocumentOnStartPageOnEndPage

正常工作,但添加了一个空白页面,以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();
    }

0 个答案:

没有答案