'itextsharp place Pdfptable at desired position
Header Content and Pdftable is overlapping
How can I place PdfPTable at any position in the pdf page using (x, y) positioning like (100, 200) or (15, 100) at any place on the pdf page?
Header Table using PdfEventHelper
public override void OnEndPage(PdfWriter writer, Document document)
{
AddHeader(writer, document);
}
public void AddHeader(PdfWriter writer, Document document)
{
// set no of rows
PdfPTable headerTable = new PdfPTable(1);
// set the width
headerTable.TotalWidth = document.PageSize.Width;
headerTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
PdfPCell company = new PdfPCell(new Phrase(new Chunk("Name", fontArial)));
company.HorizontalAlignment = Element.ALIGN_CENTER;
company.BorderWidth = 0;
headerTable.AddCell(company);
PdfPCell report = new PdfPCell(new Phrase(new Chunk("PrintedDate", fontArial)));
report.HorizontalAlignment = Element.ALIGN_CENTER;
report.BorderWidth = 0;
headerTable.AddCell(report);
headerTable.TotalWidth = document.PageSize.Width - 20;
// write rows to the pdf output stream
Rectangle pageSize = document.PageSize;
headerTable.WriteSelectedRows(0, -1, 0, (document.PageSize.Height - 10), writer.DirectContent);
}
In My Main Class I am doing like this
PdfWriter pdfWriter = PdfWriter.GetInstance(document, new FileStream(pdfFile, FileMode.Create));
pdfWriter.PageEvent = page;
document.Open()
Next Here I am adding a pdftable
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 = Element.ALIGN_RIGHT;
HeaderRightCell.Padding = 5;
HeaderRightCell.PaddingBottom = 8;
HeaderRightCell.BorderWidthLeft = 0;
HeaderTable.AddCell(HeaderRightCell);
HeaderTable.WriteSelectedRows(0, -1, pageSize.GetLeft(40), pageSize.GetTop(50), cb);
The result is overlap of Header Content and pdftable
Solution 1:[1]
As mentioned in the itext docs-
To avoid having the cell border and the content overlap, if you are having thick cell borders, call the setUserBorderPadding(true), like this:
cell.setUserBorderPadding(true);
Solution 2:[2]
you have calculated the y position for your header table in onload()
like document.PageSize.Height-10
.
please set some calculated value instead of pageSize.GetTop(50)
in the second table also.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | My God |
Solution 2 | Rahul Sharma |