anilvardhan
anilvardhan

Reputation: 13

itextsharp - page number missing on continution page c#

i have 4 HTML's content, where 2nd HTML have large tables data. Once PDF generated 2nd HTML related content spread into 3 pages in PDF. But page numbers not displaying for the first 2. For the 2nd HTML i'm rotating the page in pdf while generate.

PDF displays as below:

1 HTML - page 1 - 1 of 5

2 HTML

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

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

   - page 4  - 4 of 5

3 HTML - page 5 - 5 of 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); ;
        }
    }

//Code

 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;
        }
    }

Pleas suggest me where i am missing.

Upvotes: 0

Views: 313

Answers (1)

anilvardhan
anilvardhan

Reputation: 13

Just rearranged the storage.rotation line. Thanks 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));

            }

Upvotes: 1

Related Questions