Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to set width for PdfPCell in ItextSharp

Tags:

i want set width for PdfpCell in Table, i want design this

enter image description here
i Write this code

  PdfPCell cell;             PdfGrid tableHeader;             PdfGrid tmpTable;             PdfGrid table = new PdfGrid(numColumns: 1) { WidthPercentage = 100, RunDirection = PdfWriter.RUN_DIRECTION_LTR, ExtendLastRow = false };              string imagepath2 = HttpRuntime.AppDomainAppPath + "Header.JPG";             cell = new PdfPCell() { Border = 0, RunDirection = PdfWriter.RUN_DIRECTION_RTL };             cell.Image = iTextSharp.text.Image.GetInstance(imagepath2);             table.AddCell(cell);               tableHeader = new PdfGrid(numColumns: 10);             tableHeader.RunDirection = PdfWriter.RUN_DIRECTION_LTR;              tmpTable = new PdfGrid(numColumns: 1);             tmpTable.TotalWidth = 10f;             tmpTable.LockedWidth = true;             cell = new PdfPCell() {Rotation =-90,VerticalAlignment =Element.ALIGN_MIDDLE, HorizontalAlignment =Element.ALIGN_CENTER, BorderWidth = 1};             cell.Phrase = fontSelector.Process("SER. No");              tmpTable.AddCell(cell);              cell = new PdfPCell(tmpTable) { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             tableHeader.AddCell(cell);              ////////////////////////////////////////////////////////////             tmpTable = new PdfGrid(numColumns: 1);             cell = new PdfPCell() { Border = 0,  BorderWidthBottom = 1,VerticalAlignment =Element.ALIGN_MIDDLE, HorizontalAlignment =Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("TYPE OF SHIPPING");             //             tmpTable.AddCell(cell);               cell = new PdfPCell() { Border = 0, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("AWB / BL NO.");             tmpTable.AddCell(cell);              cell = new PdfPCell(tmpTable) { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             tableHeader.AddCell(cell);             ///////////////////////////////////////////////////////////////              tmpTable = new PdfGrid(numColumns: 1);             cell = new PdfPCell() { Border = 0, BorderWidthBottom = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("ORDER NO.");             tmpTable.AddCell(cell);               cell = new PdfPCell() { Border = 0, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("COMPLEX NAME");             tmpTable.AddCell(cell);              cell = new PdfPCell(tmpTable) { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             tableHeader.AddCell(cell);             ///////////////////////////////////////////////////////////////              tmpTable = new PdfGrid(numColumns: 1);             cell = new PdfPCell() { Border = 0, BorderWidthBottom = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("QTY.");             tmpTable.AddCell(cell);               cell = new PdfPCell() { Border = 0, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("G.W Kgs.");             tmpTable.AddCell(cell);              cell = new PdfPCell(tmpTable) { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             tableHeader.AddCell(cell);             ///////////////////////////////////////////////////////////////             tmpTable = new PdfGrid(numColumns: 1);             cell = new PdfPCell() { Border = 0, BorderWidthBottom = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("DISCHARGE PPORT");             tmpTable.AddCell(cell);               cell = new PdfPCell() { Border = 0, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("DESTINATON");             tmpTable.AddCell(cell);              cell = new PdfPCell(tmpTable) { BorderWidth = 1 };             tableHeader.AddCell(cell);             ///////////////////////////////////////////////////////////////             cell = new PdfPCell() { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("DESCRIPTION OF GOODS");              tableHeader.AddCell(cell);              /////////////////////////////////////////////////////////////             tmpTable = new PdfGrid(numColumns: 1);             cell = new PdfPCell() { Border = 0, BorderWidthBottom = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("LINE DOC. RECI. DATE");             tmpTable.AddCell(cell);               cell = new PdfPCell(new Phrase("")) { Border = 0, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("OWNER DOC. RECI. DATE");             tmpTable.AddCell(cell);              cell = new PdfPCell(tmpTable) { BorderWidth = 1 };             tableHeader.AddCell(cell);             ///////////////////////////////////////////////////////////////             cell = new PdfPCell() { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("CLEARANCE DATE");              tableHeader.AddCell(cell);              ///////////////////////////////////////////////////////////              cell = new PdfPCell() { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("CUSTOM PERMIT NO.");              tableHeader.AddCell(cell);              ///////////////////////////////////////////////////////////             cell = new PdfPCell() { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };             cell.Phrase = fontSelector.Process("DISPATCH DATE");             tableHeader.AddCell(cell);              ///////////////////////////////////////////////////////////             cell = new PdfPCell(tableHeader) { BorderWidth = 1, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER };              table.AddCell(cell);             doc.Add(table);             ///////////////////////////////////////////////////////////             doc.Close(); 

but this code create this table enter image description here

i want resize width SerNo column but

But I do not know how to resize the width of the cell, please help me.

like image 741
Pouya Avatar asked Nov 27 '12 09:11

Pouya


People also ask

How do I change cell width on Pdfpcell?

You can't change the width of individual cells, only of a complete column. The PdfPtable class has the setWidths method for that, or you can use the PdfPTable(float[] relativeWidths) constructor. PdfPTable toolsTable = new PdfPTable( 3 ); toolsTable.

How to set the table cell width in iTextsharp?

Check out below example: //Create a OrderNo table PdfPTable firstTable = new PdfPTable(4); //set overall width firstTable. WidthPercentage = 90f; //set column widths int[] firstTablecellwidth ={ 25, 25, 18, 32 }; firstTable. SetWidths(firstTablecellwidth);


2 Answers

Why not use a PdfPTable object for this? Create a fixed width table and use a float array to set the widths of the columns

PdfPTable table = new PdfPTable(10); table.HorizontalAlignment = 0; table.TotalWidth = 500f; table.LockedWidth = true; float[] widths = new float[] { 20f, 60f, 60f, 30f, 50f, 80f, 50f, 50f, 50f, 50f }; table.SetWidths(widths);  addCell(table, "SER.\nNO.", 2);  addCell(table, "TYPE OF SHIPPING", 1); addCell(table, "ORDER NO.", 1); addCell(table, "QTY.", 1); addCell(table, "DISCHARGE PPORT", 1);  addCell(table, "DESCRIPTION OF GOODS", 2);  addCell(table, "LINE DOC. RECL DATE", 1);  addCell(table, "CLEARANCE DATE", 2); addCell(table, "CUSTOM PERMIT NO.", 2); addCell(table, "DISPATCH DATE", 2);  addCell(table, "AWB/BL NO.", 1); addCell(table, "COMPLEX NAME", 1); addCell(table, "G. W. Kgs.", 1); addCell(table, "DESTINATION", 1); addCell(table, "OWNER DOC. RECL DATE", 1);  ....  private static void addCell(PdfPTable table, string text, int rowspan) {     BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);     iTextSharp.text.Font times = new iTextSharp.text.Font(bfTimes, 6, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.BLACK);      PdfPCell cell = new PdfPCell(new Phrase(text, times));     cell.Rowspan = rowspan;     cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;     cell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE;     table.AddCell(cell); } 

have a look at this tutorial too...

like image 144
Reinder Wit Avatar answered Oct 01 '22 20:10

Reinder Wit


Try something like this

PdfPCell cell; PdfPTable tableHeader; PdfPTable tmpTable; PdfPTable table = new PdfPTable(10) { WidthPercentage = 100, RunDirection = PdfWriter.RUN_DIRECTION_LTR, ExtendLastRow = false };  // row 1 / cell 1 (merge) PdfPCell _c = new PdfPCell(new Phrase("SER. No")) { Rotation = -90, VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER, BorderWidth = 1 }; _c.Rowspan = 2;  table.AddCell(_c);  // row 1 / cell 2 _c = new PdfPCell(new Phrase("TYPE OF SHIPPING")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 1 / cell 3 _c = new PdfPCell(new Phrase("ORDER NO.")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 1 / cell 4 _c = new PdfPCell(new Phrase("QTY.")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 1 / cell 5 _c = new PdfPCell(new Phrase("DISCHARGE PPORT")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 1 / cell 6 (merge) _c = new PdfPCell(new Phrase("DESCRIPTION OF GOODS")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; _c.Rowspan = 2; table.AddCell(_c);  // row 1 / cell 7 _c = new PdfPCell(new Phrase("LINE DOC. RECI. DATE")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 1 / cell 8 (merge) _c = new PdfPCell(new Phrase("OWNER DOC. RECI. DATE")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; _c.Rowspan = 2; table.AddCell(_c);  // row 1 / cell 9 (merge) _c = new PdfPCell(new Phrase("CLEARANCE DATE")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; _c.Rowspan = 2; table.AddCell(_c);  // row 1 / cell 10 (merge) _c = new PdfPCell(new Phrase("CUSTOM PERMIT NO.")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; _c.Rowspan = 2; table.AddCell(_c);   // row 2 / cell 2 _c = new PdfPCell(new Phrase("AWB / BL NO.")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 2 / cell 3 _c = new PdfPCell(new Phrase("COMPLEX NAME")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 2 / cell 4 _c = new PdfPCell(new Phrase("G.W Kgs.")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 2 / cell 5 _c = new PdfPCell(new Phrase("DESTINATON")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  // row 2 / cell 7 _c = new PdfPCell(new Phrase("OWNER DOC. RECI. DATE")) { VerticalAlignment = Element.ALIGN_MIDDLE, HorizontalAlignment = Element.ALIGN_CENTER }; table.AddCell(_c);  _doc.Add(table); /////////////////////////////////////////////////////////// _doc.Close(); 

You might need to re-adjust slightly on the widths and borders but that is a one shot to do.

like image 25
Nick.T Avatar answered Oct 01 '22 21:10

Nick.T