iTextSharp - Nutzung Colspan mit PdfPRow
Ich bin in der Lage, mehrere Zeilen zu erstellen, wenn Sie enthalten die gleiche Anzahl von Spalten:
table = new PdfPTable(3);
var firstRowCell1 = new PdfPCell( new Phrase ("Row 1 - Column 1"));
var firstRowCell2 = new PdfPCell( new Phrase ("Row 2 - Column 2"));
var firstRowCell3 = new PdfPCell( new Phrase ("Row 3 - Column 3"));
PdfPCell[] row1Cells = { firstRowCell1, firstLineRow2, firstRowCell3 };
var row1 = new PdfPRow(row1Cells);
table.Rows.Add(row1);
var nextRowCell1 = new PdfPCell( new Phrase ("Row 2 - Column 1"));
var nextRowCell2 = new PdfPCell( new Phrase ("Row 2 - Column 2"));
var nextRowCell3 = new PdfPCell( new Phrase ("Row 2 - Column 3"));
PdfPCell[] row2Cells = { nextRowCell1, nextRowCell2, nextRowCell3 };
var row2 = new PdfPRow(row2Cells);
table.Rows.Add(row2);
Dies funktioniert gut, geben Sie mir zwei Zeilen mit je drei Spalten.
Jedoch wenn ich die erste Zeile nur noch eine lange Spalte mit Colspan es verschwindet:
var table = new PdfPTable(3);
var firstRowCell1 = new PdfPCell(new Phrase("Row 1 - Column 1"));
firstRowCell1.Colspan = 3;
PdfPCell[] row1Cells = { firstRowCell1 };
var row1 = new PdfPRow(row1Cells);
deptHeaderTable.Rows.Add(row1);
var nextRowCell1 = new PdfPCell(new Phrase("Row 2 - Column 1"));
var nextRowCell2 = new PdfPCell(new Phrase("Row 2 - Column 2"));
var nextRowCell3 = new PdfPCell(new Phrase("Row 2 - Column 3"));
PdfPCell[] row2Cells = { nextRowCell1, nextRowCell2, nextRowCell3 };
var row2 = new PdfPRow(row2Cells);
deptHeaderTable.Rows.Add(row2);
Gibt es keine Fehler gegeben, die es einfach nicht machen.
Zusätzlich ich bin mir bewusst, Tabelle.AddCell der startet automatisch eine neue Zeile, wenn die Spalte der Tabelle Grenze erreicht wird, die für die aktuelle Zeile. Allerdings möchte ich PdfPRow, wenn überhaupt möglich.
Jegliche Hilfe würde sehr geschätzt werden.
InformationsquelleAutor Baxter | 2013-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint, wie Sie haben, Lesen Sie die Dokumentation, die nicht unterstützt von der ursprünglichen iText Entwickler (mich). Darf ich Sie bitten, für die URL, wo Sie festgestellt haben, dass die Dokumentation, so dass ich Fragen kann für eine Unterlassungserklärung?
Als für die Antwort auf Ihre Frage: bitte werfen Sie einen Blick auf die offizielle Dokumentation, und finden Sie die MyFirstTable Beispiel. Basierend auf diesem Beispiel können Sie sich Ihren eigenen code wie folgt:
Wie Sie sehen können, gibt es keinen Grund, die
PdfPRow
Klasse. DiePdfPRow
- Klasse wird intern von iText, aber wie dokumentiert in meinem Buch, Entwickler, die mit iText sollten nicht verwenden diese Klasse in Ihrem code.Lowagie: Kein Wunder, dass die meisten Beispiele aus der Tabelle.AddCell statt der Tabelle.Zeilen.Add(somePdfPRow Objekt). Ich denke immer noch, dass es natürlich mehr zu schaffen Zellen, diese Zellen zu einer Zeile und fügen Sie dann die Zeile in der Tabelle.Zeilen. Mit Hilfe der Tabelle.AddCell macht es nur sehr schwer aufzuspüren, wo ich eine zusätzliche Zelle oder wo ich verpasste eine Zelle, denn Sie wird blind hinzufügen von Zellen an den Tisch und beginnen Sie eine neue Zeile, wenn die Anzahl der definierten Spalten hat, erschöpft sich in einer einzigen Zeile. Sind Sie damit einverstanden?
Ich persönlich denke, es ist einfacher zu lassen iText Griff alle der Reihe Sachen, aber das ist Ansichtssache. Es gibt vor-und Nachteile für beide Herangehensweisen.
InformationsquelleAutor Bruno Lowagie
Obwohl ich würde empfehlen, mit code pro der offiziellen Dokumentation, wie oben empfohlen von der original-Autor (Danke, Herr !!!), es gibt einen Weg, um das Problem zu beheben:
InformationsquelleAutor MAUB