2012-04-19 392 views
6

是否可以在iTextSharp中的表格(PdfPTable)中有單元格間距?我無法看到任何可能的地方。我確實看到了一個使用iTextSharp.text.Table的建議,但在我的iTextSharp(5.2.1)版本中似乎沒有。iTextSharp表格單元格間距可能?

回答

1

Table類已從5.x開始從iText中刪除,以支持PdfPTable。

至於間距,你要找的是setPadding方法。

看一看的iText的API的更多信息:

http://api.itextpdf.com/itext/com/itextpdf/text/pdf/PdfPCell.html

(這對Java版本,但C#端口維護的方法的名稱)

+4

感謝您的但是這是用於添加細胞填充(在細胞內)。我需要的是單元格間距(單元格之間)。 – 2012-04-20 11:49:32

13

如果你正在尋找對於真正的單元格間距,如HTML,則不是,PdfPTable本身不支持。然而,PdfPCell支持一個屬性,該屬性需要IPdfPCellEvent的自定義實現,只要單元佈局發生,該屬性就會被調用。下面是一個簡單的實現,你可能想調整它以滿足你的需求。

public class CellSpacingEvent : IPdfPCellEvent { 
    private int cellSpacing; 
    public CellSpacingEvent(int cellSpacing) { 
     this.cellSpacing = cellSpacing; 
    } 
    void IPdfPCellEvent.CellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases) { 
     //Grab the line canvas for drawing lines on 
     PdfContentByte cb = canvases[PdfPTable.LINECANVAS]; 
     //Create a new rectangle using our previously supplied spacing 
     cb.Rectangle(
      position.Left + this.cellSpacing, 
      position.Bottom + this.cellSpacing, 
      (position.Right - this.cellSpacing) - (position.Left + this.cellSpacing), 
      (position.Top - this.cellSpacing) - (position.Bottom + this.cellSpacing) 
      ); 
     //Set a color 
     cb.SetColorStroke(BaseColor.RED); 
     //Draw the rectangle 
     cb.Stroke(); 
    } 
} 

要使用它:

//Create a two column table 
PdfPTable table = new PdfPTable(2); 
//Don't let the system draw the border, we'll do that 
table.DefaultCell.Border = 0; 
//Bind our custom event to the default cell 
table.DefaultCell.CellEvent = new CellSpacingEvent(2); 
//We're not changing actual layout so we're going to cheat and padd the cells a little 
table.DefaultCell.Padding = 4; 
//Add some cells 
table.AddCell("Test"); 
table.AddCell("Test"); 
table.AddCell("Test"); 
table.AddCell("Test"); 

doc.Add(table); 
-4

嘗試

 PdfPTable table = new PdfPTable(2); 
     table.getDefaultCell().setBorder(0); 
     table.getDefaultCell().setPadding(8); 
     table.addCell("Employee ID"); 
     table.addCell(""); 
     table.addCell("Employee Name"); 
     table.addCell(""); 
     table.addCell("Department"); 
     table.addCell(""); 
     table.addCell("Place"); 
     table.addCell(""); 
     table.addCell("Contact Number"); 
     table.addCell(""); 
     document.add(table);