2016-03-27 10 views
0

Ich versuche, iTextSharp() zum ersten Mal zu verwenden, und ich habe ein Problem beim Erstellen einer Tabelle in einem PDF-Dokument. In der Tat, ich möchte die erste Zelle diagonal teilen, um in den Titel der ersten Zeile und den Titel der ersten Spalte zu schreiben.Teilen von Tabellenzellen diagonal iterixsharp

Bild 1 ist das, was ich Bild machen konnte 2 ist, was ich

Danke tun wollen. Picture 1Picture 2

Antwort

1

Sie benötigen diese spezielle Zelle unter Verwendung eines Zelle Ereignis erstellen wie im official documentation dokumentiert.

Ich gebe Ihnen einige Pseudo-Code, den Sie in C# konvertieren, und das wird eine Tabelle erstellen, die wie folgt aussieht:

enter image description here

Dies ist der Pseudo-Code für die Zelle Ereignis:

class Diagonal implements PdfPCellEvent { 
    protected String columns; 
    protected String rows; 

    public Diagonal(String columns, String rows) { 
     this.columns = columns; 
     this.rows = rows; 
    } 

    public void cellLayout(PdfPCell cell, Rectangle position, 
     PdfContentByte[] canvases) { 
     PdfContentByte canvas = canvases[PdfPTable.TEXTCANVAS]; 
     ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, 
      new Phrase(columns), position.getRight(2), position.getTop(12), 0); 
     ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, 
      new Phrase(rows), position.getLeft(2), position.getBottom(2), 0); 
     canvas = canvases[PdfPTable.LINECANVAS]; 
     canvas.moveTo(position.getLeft(), position.getTop()); 
     canvas.lineTo(position.getRight(), position.getBottom()); 
     canvas.stroke(); 
    } 
} 

Dies ist der Pseudo-Code, der Ihnen zeigt, wie die Zelle Ereignis verwenden:

public void createPdf(String dest) throws IOException, DocumentException { 
    Document document = new Document(); 
    PdfWriter.getInstance(document, new FileOutputStream(dest)); 
    document.open(); 
    PdfPTable table = new PdfPTable(6); 
    table.getDefaultCell().setMinimumHeight(30); 
    PdfPCell cell = new PdfPCell(); 
    cell.setCellEvent(new Diagonal("Gravity", "Occ")); 
    table.addCell(cell); 
    table.addCell("1"); 
    table.addCell("2"); 
    table.addCell("3"); 
    table.addCell("4"); 
    table.addCell("5"); 
    for (int i = 0; i < 5;) { 
     table.addCell(String.valueOf(++i)); 
     table.addCell(""); 
     table.addCell(""); 
     table.addCell(""); 
     table.addCell(""); 
     table.addCell(""); 
    } 
    document.add(table); 
    document.close(); 
} 

Nun liegt es an Ihnen, diesen Pseudo-Code (der tatsächlich Java-Code verwendet) in C# zu konvertieren.

+0

Vielen Dank, jetzt weiß ich, wie es geht! – user6054254

+0

Darf ich zukünftigen Benutzern raten, dieses Tutorial zu sehen, es ist wirklich erstaunlich http://www.mikesdotnetting.com/Article/86/iTextSharp-Introducing-Tables – user6054254

+1

Hallo @ user6054254 Es ist Brauch, * eine Antwort * zu akzeptieren, wenn es Ihr Problem gelöst hat . –