2012-04-19 42 views
6

Có thể có khoảng cách ô trong bảng (PdfPTable) trong iTextSharp không? Tôi không thể thấy bất cứ nơi nào có thể. Tôi đã nhìn thấy một gợi ý của việc sử dụng iTextSharp.text.Table thay vào đó nhưng điều đó dường như không có sẵn trên phiên bản của tôi của iTextSharp (5.2.1).Khoảng cách giữa các ô của bảng iTextSharp có thể?

Trả lời

1

Lớp bảng đã bị xóa khỏi iText bắt đầu từ 5.x, có lợi cho PdfPTable.

Đối với khoảng cách, những gì bạn đang tìm kiếm là các phương pháp setPadding.

Hãy nhìn vào API iText để biết thêm thông tin:

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

(Đó là cho phiên bản Java, nhưng C# cảng duy trì tên của các phương pháp)

+4

Cảm ơn cho điều đó nhưng đó là để thêm đệm tế bào (trong tế bào). Những gì tôi cần là khoảng cách giữa các ô (giữa các ô). –

13

Nếu bạn đang tìm kiếm đối với khoảng cách giữa các ô như HTML thì không, số PdfPTable không hỗ trợ nguyên bản. Tuy nhiên, PdfPCell hỗ trợ thuộc tính thực hiện tùy chỉnh IPdfPCellEvent sẽ được gọi bất cứ khi nào bố cục ô. Dưới đây là một thực hiện đơn giản của một, bạn có thể sẽ muốn tinh chỉnh nó theo nhu cầu của bạn.

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

Để sử dụng nó:

//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

Thử

 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); 
Các vấn đề liên quan