2012-11-27 11 views
15

voglio larghezza impostata per PdfpCell nella tabella, voglio progettare questocome impostare la larghezza per PdfPCell in iTextSharp

enter image description here
scrivo questo codice

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(); 

ma questo codice creare questa tabella enter image description here

voglio ridimensionare colonna Serno larghezza ma

Ma non so come ridimensionare la larghezza della cella, per favore aiutami.

+0

Perché usate PdfGrid e non PdfPTable? Non è chiaro cosa esattamente vuoi fare. C'è un tavolo quindi c'è un tableHeader e non hanno link. (???) –

+0

@ Nick: tabella Intestazione è tabelle nidificate, in questa cella solo RowNo e voglio che io sia piccola e la larghezza – Pouya

risposta

33

Perché non utilizzare un oggetto PdfPTable per questo? Creare una tabella di larghezza fissa e utilizzare un array di float per impostare la larghezza delle colonne

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

dare un'occhiata al this tutorial troppo ...

+0

ho aggiornato la mia domanda con l'esempio fornito. Si tratta di impostare la larghezza sul tavolo –

+0

Mi piace questo, è più pulito. Potresti anche andare oltre e creare una sorta di fila di template in un metodo. Chiameresti il ​​metodo con qualcosa come "AddRow (PdfPTable _t, DataRow _dr, bool _head)'. Da lì tutto è facile. –

+0

@ Nick.T: ancora meglio, ho aggiornato il mio esempio di codice, ma solo per ciascuna cella –

3

provare qualcosa di simile

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(); 

È potrebbe essere necessario riaggiustare leggermente le larghezze e i bordi, ma questo è un colpo da fare.

1

aca Definis los anchos

float[] anchoDeColumnas= new float[] {10f, 20f, 30f, 10f}; 

aca se los insertas alla Tabella que tiene Columnas

table.setWidths(anchoDeColumnas); 
2

provare questo codice Credo sia più ottimale.

HeaderRow viene utilizzato per ripetere l'intestazione della tabella per ogni nuova pagina automaticamente

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

     PdfPTable table = new PdfPTable(10) { HorizontalAlignment = Element.ALIGN_CENTER, WidthPercentage = 100, HeaderRows = 2 }; 
     table.SetWidths(new float[] { 2f, 6f, 6f, 3f, 5f, 8f, 5f, 5f, 5f, 5f }); 
     table.AddCell(new PdfPCell(new Phrase("SER.\nNO.", times)) { Rowspan = 2, GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("TYPE OF SHIPPING", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("ORDER NO.", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("QTY.", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("DISCHARGE PPORT", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("DESCRIPTION OF GOODS", times)) { Rowspan = 2, GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("LINE DOC. RECL DATE", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("CLEARANCE DATE", times)) { Rowspan = 2, GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("CUSTOM PERMIT NO.", times)) { Rowspan = 2, GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("DISPATCH DATE", times)) { Rowspan = 2, GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("AWB/BL NO.", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("COMPLEX NAME", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("G. W. Kgs.", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("DESTINATION", times)) { GrayFill = 0.95f }); 
     table.AddCell(new PdfPCell(new Phrase("OWNER DOC. RECL DATE", times)) { GrayFill = 0.95f });