Reputation: 13
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
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