2012-11-27 27 views
15

設置寬度爲PdfPCell我想在表PdfpCell設置寬度,我想設計出這個如何iTextSharp的

enter image description here
我寫這篇文章的代碼

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

但是這個代碼創建該表 enter image description here

我想調整寬度SerNo列,但

但我不知道如何調整單元格的寬度,請幫助我。

+0

爲什麼使用PdfGrid而不是PdfPTable?目前還不清楚你到底想做什麼。有一個表,然後有一個tableHeader,他們沒有鏈接。 (???) –

+0

@ Nick:table Header是嵌套表格,在這個單元格中只是RowNo,並且希望我很小並且寬度爲 – Pouya

回答

33

爲什麼不使用PdfPTable這個對象? 創建一個固定寬度的表格,並使用float數組設置列

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

看看this tutorial太多的寬度......

+0

我已經使用提供的示例更新了我的問題。這是關於設置表 –

+0

我喜歡這個的寬度,它更乾淨。您也可以走得更遠,並在方法中創建一種模板行。你可以用'AddRow(PdfPTable _t,DataRow _dr,bool _head)'來調用方法。從那裏一切都很簡單。 –

+0

@ Nick.T:甚至更好,我更新了我的代碼示例,但僅適用於每個單元 –

3

嘗試是這樣的

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

你可能需要在寬度和邊界上稍微調整一下,但這只是一個鏡頭。

1

ACA definis洛杉磯anchos

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

ACA SE洛杉磯insertas一拉塔布拉闕tiene las Columnas酒店

table.setWidths(anchoDeColumnas); 
2

試試這個代碼,我認爲這是更優化。

HeaderRow用於重複的表頭爲每個新頁自動

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