itextsharp - 续页 c# 上缺少页码

itextsharp - page number missing on continution page c#

我有 4 个 HTML 的内容,其中第 2 个 HTML 有大量表格数据。一旦 PDF 生成 2nd HTML 相关内容,就会在 PDF 中传播到 3 页。但是前 2 页不显示页码。对于第 2 页 HTML 我在生成时以 pdf 格式旋转页面。

PDF显示如下:

1 HTML - 第 1 页 - 第 1 页,共 5 页

2 HTML

   - page 2  - ***...no page number...***

   - page 3  - ***...no page number...***

   - page 4  - 4 of 5

3 HTML - 第 5 页 - 第 5 页,共 5 页

 public void HTMLToPdfCMC(string[] HTML, string fileName, string folderPath, string physicalApplPath, string requestNumber = "")
    {
        try
        {
            Document document = new Document();
            PdfWriter pdfwriter = PdfWriter.GetInstance(document, new FileStream(physicalApplPath + folderPath + "\" + fileName + ".pdf", FileMode.Create));

            TableHeader tevent = new TableHeader();
            tevent.Header = requestNumber;
            pdfwriter.PageEvent = tevent;
            document.SetPageSize(PageSize.A4);
            document.Open();
            Storage.rotationPage = "";

            iTextSharp.text.html.simpleparser.StyleSheet styles = new iTextSharp.text.html.simpleparser.StyleSheet();
            iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);

            foreach (string htmlPage in HTML)
            {
                if (!string.IsNullOrEmpty(requestNumber) && requestNumber.Contains("CMC") && HTML[1] != null && HTML[1] == htmlPage)
                {
                    //do page rotation
                    document.SetPageSize(PageSize.A4.Rotate());
                    document.NewPage();
                    hw.Parse(new StringReader(htmlPage));
                    Storage.rotationPage = "true";
                }
                else
                {
                    document.SetPageSize(PageSize.A4);
                    document.NewPage();
                    hw.Parse(new StringReader(htmlPage));
                    Storage.rotationPage = "false";
                }
            }

            document.Close();
        }
        catch (Exception ex)
        {
            LogUtil.PublishException("Error in HTMLToPdf EmailHelper - " + ex.Message, ex, null, 8); ;
        }
    }

//代码

 public override void OnEndPage(PdfWriter writer, Document document)
    {
        PdfPTable table = new PdfPTable(3);
        try
        {
            table.SetWidths(new int[] { 24, 24, 2 });
            table.TotalWidth = 527;
            table.LockedWidth = true;
            table.DefaultCell.FixedHeight = 20;
            table.DefaultCell.Border = iTextSharp.text.Rectangle.NO_BORDER;
            iTextSharp.text.Font fontH1 = new iTextSharp.text.Font(FontFactory.GetFont("arial", 8));
            PdfPCell headerCell = new PdfPCell(new Phrase(Header, fontH1));
            headerCell.Border = iTextSharp.text.Rectangle.NO_BORDER;
            headerCell.HorizontalAlignment = Element.ALIGN_CENTER;
            headerCell.PaddingLeft = 180;

            table.AddCell(headerCell);



            PdfPCell cell2 = new PdfPCell(new Phrase(string.Format("Page {0} of", writer.PageNumber), fontH1));
            cell2.Border = iTextSharp.text.Rectangle.NO_BORDER;
            cell2.HorizontalAlignment = Element.ALIGN_RIGHT;

            BaseFont bfTimes = BaseFont.CreateFont();
            PdfPCell cell = null;
            if (Storage.rotationPage == "true")
            {
                //totalH.SetFontAndSize(bfTimes, 10);  
                cell = new PdfPCell(iTextSharp.text.Image.GetInstance(total), true);
            }
            else
            {
                //total.SetFontAndSize(bfTimes, 12);
                cell = new PdfPCell(iTextSharp.text.Image.GetInstance(total), true);
            }
            cell.Border = iTextSharp.text.Rectangle.NO_BORDER;

            table.AddCell(cell2);
            table.AddCell(cell);


            if (Storage.rotationPage == "true")
            {
                table.TotalWidth = 790;
                table.WriteSelectedRows(0, -1, 34, 570, writer.DirectContent);
            }
            else
            {
                table.WriteSelectedRows(0, -1, 34, 815, writer.DirectContent);

            }


            //float floatx = 20;
            //float floaty = 50;
            //table.WriteSelectedRows(0, -1, floatx, floaty, writer.DirectContent);
        }
        catch (DocumentException de)
        {
            throw de;
        }
    }

请告诉我我遗漏的地方。

刚刚重新排列了 storage.rotation 行。 谢谢 MKL。

    if (!string.IsNullOrEmpty(requestNumber) && requestNumber.Contains("CMC") && HTML[1] != null && HTML[1] == htmlPage)
            {
                //do page rotation
                document.SetPageSize(PageSize.A4.Rotate());
                document.NewPage();
                 Storage.rotationPage = "true";
                hw.Parse(new StringReader(htmlPage));

            }
            else
            {
                document.SetPageSize(PageSize.A4);
                document.NewPage();
                 Storage.rotationPage = "false";
                hw.Parse(new StringReader(htmlPage));

            }