Im trying to figure out how to get my text inside a PdfPCell to show in the middle. I have tried many different options, like:
myCell.VerticalAlignment = Element.ALIGN_MIDDLE; myCell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE; myCell.VerticalAlignment = Rectangle.ALIGN_MIDDLE;
None of that works for me. VerticalAlignment takes an int, so I tried to make a loop, to see if i could find the right number, but everything just get left bottom align..
Document myDocument = new Document(PageSize.A4);
PdfWriter myPdfWriter = PdfWriter.GetInstance(myDocument, new FileStream(strPDFFilePath, FileMode.Create));
myDocument.Open();
myDocument.NewPage();
PdfContentByte myPdfContentByte = myPdfWriter.DirectContent;
PdfPCell myCell;
Paragraph myParagraph;
PdfPTable myTable = new PdfPTable(4);
myTable.WidthPercentage = 100;
myTable.SetWidths(new int[4] { 25, 25, 25, 25 });
myTable.DefaultCell.BorderWidth = 1;
myTable.DefaultCell.BorderColor = BaseColor.RED;
for (int i = -100; i < 100; i++)
{
myParagraph = new Paragraph(String.Format("Alignment: {0}", i));
myParagraph.Font.SetFamily("Verdana");
myParagraph.Font.SetColor(72, 72, 72);
myParagraph.Font.Size = 11;
myCell = new PdfPCell();
myCell.AddElement(myParagraph);
myCell.HorizontalAlignment = i;
myCell.VerticalAlignment = i;
myTable.AddCell(myCell);
}
myDocument.Add(myTable);
myDocument.Add(new Chunk(String.Empty));
myDocument.Close();
I think the basic problem you're having is that you're adding text to iTextSharp
Paragraph
objects and then attempting to set this text's alignment using thePdfPCell
object that contains it. I'm not sure if thePdfPCell.VerticalAlignment
property is only for aPdfPCell
's text, or if aligning theParagraph
object inside thePdfPCell
doesn't have any affect you can see in your test.You're also setting
myCell.HorizontalAlignment
andmyCell.VerticalAlignment
to the index value in yourfor
loop. I think you meant to use 1 instread ofi
.Anyway, setting a PdfPCell's
HorizontalAlignment
andVerticalAlignment
properties do work though. Below is a small method that demonstrates this. I wrote it very loosely based on what you were trying to do; if it's close enough to what you're trying to do perhaps you can use this as a starting point in your project.Jay Riggs solution started to work also for vertical alignment when I added:
cell.UseAscender = true;
http://www.afterlogic.com/mailbee-net/docs-itextsharp/html/0602b79e-ea9c-0c7d-c4b2-bc4b5f976f15.htm
I tried giving direct integers and other solutions mentioned here. But nothing worked for me. A combination of this worked for me in Composition method.
Please use given code, i hope i will be most helpful for those who want to print a text in a cell in middle and top alignment protected void Page_Load(object sender, EventArgs e) { gettable(); }