2012-04-19 4 views
6

È possibile avere una spaziatura tra celle all'interno di una tabella (PdfPTable) in iTextSharp? Non riesco a vedere da nessuna parte che sia possibile. Ho visto invece un suggerimento di utilizzare iTextSharp.text.Table ma non sembra disponibile sulla mia versione di iTextSharp (5.2.1).Possibile spaziatura della tabella della tabella iTextSharp?

risposta

1

La classe Tabella è stata rimossa da iText a partire da 5.x, in favore di PdfPTable.

Per quanto riguarda la spaziatura, quello che stai cercando sono i metodi setPadding.

Dai un'occhiata alla API di iText per ulteriori informazioni:

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

(E 'per la versione di Java, ma la porta C# mantiene i nomi dei metodi)

+4

Grazie per questo, ma che è per l'aggiunta di imbottitura delle cellule (all'interno della cellula). Ciò di cui ho bisogno è la spaziatura delle celle (tra le celle). –

13

Se siete alla ricerca per una vera spaziatura delle celle come HTML allora no, lo PdfPTable non supporta questo in modo nativo. Tuttavia, lo PdfPCell supporta una proprietà che accetta un'implementazione personalizzata di IPdfPCellEvent che verrà richiamata ogni volta che si verifica un layout di cella. Di seguito è una semplice implementazione di uno, probabilmente si vorrà modificarlo in base alle proprie esigenze.

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

usarlo:

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

provarlo

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