iTextSharp PageNumber,但不包括第一页和最后一页

本文关键字:最后 一页 第一页 不包括 PageNumber iTextSharp | 更新日期: 2023-09-27 18:02:08

我想显示我的PDF页面的页码,但是我不想在第一页和最后一页显示页码,因为它们是封面。

我使用以下代码:

public class PDFPage : iTextSharp.text.pdf.PdfPageEventHelper
{
    //I create a font object to use within my footer
    protected iTextSharp.text.Font footer
    {
        get
        {
            // create a basecolor to use for the footer font, if needed.
            iTextSharp.text.Color grey = new iTextSharp.text.Color(40, 40, 40);
            Font font = FontFactory.GetFont("Arial", 16, iTextSharp.text.Font.BOLD, grey);
            return font;
        }
    }
    //override the OnPageEnd event handler to add our footer
    public override void OnEndPage(PdfWriter writer, Document doc)
    {
        if (doc.PageNumber > 1)
        {
            //I use a PdfPtable with 2 columns to position my footer where I want it
            PdfPTable footerTbl = new PdfPTable(2);
            //set the width of the table to be the same as the document
            footerTbl.TotalWidth = doc.PageSize.Width;
            //Center the table on the page
            footerTbl.HorizontalAlignment = Element.ALIGN_CENTER;
            //Create a paragraph that contains the footer text
            Paragraph para = new Paragraph(" ", footer);
            //add a carriage return
            para.Add(Environment.NewLine);
            para.Add(" ");
            //create a cell instance to hold the text
            PdfPCell cell = new PdfPCell(para);
            //set cell border to 0
            cell.Border = 0;
            //add some padding to bring away from the edge
            cell.PaddingLeft = 10;
            //add cell to table
            footerTbl.AddCell(cell);
            //create new instance of Paragraph for 2nd cell text
            para = new Paragraph(" " + doc.PageNumber, footer);
            //create new instance of cell to hold the text
            cell = new PdfPCell(para);
            //align the text to the right of the cell
            cell.HorizontalAlignment = Element.ALIGN_LEFT;
            //set border to 0
            cell.Border = 0;
            // add some padding to take away from the edge of the page
            cell.PaddingRight = 10;
            //add the cell to the table
            footerTbl.AddCell(cell);
            //write the rows out to the PDF output stream.
            footerTbl.WriteSelectedRows(0, -1, 0, (doc.BottomMargin + 25), writer.DirectContent);
        }
    }
}

谢谢!

iTextSharp PageNumber,但不包括第一页和最后一页

(writer)PageNumber - 1)是最后一页。所以也检查一下。

 public class PageEventHelper : PdfPageEventHelper
    {
        PdfContentByte cb;
        PdfTemplate template;
        private int TotalNumber = 0;
       
        //for remeber lastpage
        public void SetNumber(int num)
        {
            TotalNumber = num;
        }
        public override void OnOpenDocument(PdfWriter writer, Document document)
        {
            cb = writer.DirectContent;
            template = cb.CreateTemplate(50, 50);
        }
        public override void OnEndPage(PdfWriter writer, Document document)
        {
            base.OnEndPage(writer, document);
            cb = writer.DirectContent;
            template = cb.CreateTemplate(50, 50);
            BaseFont font = BaseFont.CreateFont();
            int pageN = writer.PageNumber;
            String text = pageN.ToString();
            float len = font.GetWidthPoint(text, 9);
           
            iTextSharp.text.Rectangle pageSize = document.PageSize;
           // cb.SetRGBColorFill(100, 100, 100);
            
            ;
            cb.BeginText();
            cb.SetFontAndSize(font, 9);
            cb.SetTextMatrix(document.LeftMargin, pageSize.GetBottom(document.BottomMargin));
            //cb.ShowText(text);
            
            if (pageN > 1 && TotalNumber==0)
            {
                cb.ShowTextAligned(Element.ALIGN_CENTER, (pageN - 6).ToString() , 300f, 10f, 0);
            }
            cb.EndText();
            cb.AddTemplate(template, document.LeftMargin + len, pageSize.GetBottom(document.BottomMargin));
        }
}

如何使用代码?

 doc.Open();
            //PdfWriter writer = PdfWriter.GetInstance(doc, stream);
            PageEventHelper pageEventHelper = new PageEventHelper();
            writer.PageEvent = pageEventHelper;

在doc.closed()之前使用函数SetNumber()

pageEventHelper.SetNumber(writer.PageNumber);
            doc.Close();

可以用其他数字代替写作者。PageNumber,但不是0.

希望这对你有帮助!