Festlegen von Zellenhöhe in PDF-Tabelle erstellt, mit itextsharp
Ich verwendet folgenden code zum erstellen einer Tabelle in meiner itextsharp PDF-Dokument:
foreach (var subComp in competency.SubCompetensies)
{
cell = new PdfPCell(new Phrase(0, subComp.DescriptionMin, _nfDescr));
cell.Padding = 5;
cell.Rowspan = 2;
table.AddCell(cell);
cell = new PdfPCell(new Phrase(0, subComp.Name, _nfSubComp));
cell.Colspan = 10;
cell.Padding = 5;
table.AddCell(cell);
cell = new PdfPCell(new Phrase(subComp.DescriptionMax, _nfDescr));
cell.Padding = 5;
cell.Rowspan = 2;
table.AddCell(cell);
for (int i = 1; i < 11; i++)
{
cell = new PdfPCell(new Phrase(0, i.ToString(), _nfScale));
cell.FixedHeight = 15f;
cell.Padding = 3;
cell.PaddingLeft = 5;
table.AddCell(cell);
}
}
Und hier ist das Ergebnis:
Wie Sie sehen können, die Höhe der Zellen mit den zahlen ist anders, in jeder Zeile. Es scheint, dass die Zelle ein.FixedHeight-Eigenschaft wird ignoriert.
Gibt es eine Möglichkeit, Feste Höhe dieser Zellen?
InformationsquelleAutor Vadym Shulyk | 2016-05-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich habe eine Lösung gefunden. Wie für mich, es scheint ein wenig pervers, aber meine Frist kümmert sich nicht darum, wie exquisite mein code ist.
Kann somene werden es nützlich finden.
Warum FixedHeight ignoriert?
Weil die Zellen mit den zahlen, die letzten, die Sie verbrauchen alle des freien Speicherplatzes in einer Zeile.
Mögliche Lösungen
Ich sehe nur zwei Möglichkeiten:
Ich desided, um wählen den zweiten Weg.
Anstatt therteen Zellen mit rowspans/colspans und hinzufügen einer Zeile, füge ich nur drei Zellen:
Ich eigene Zelle Veranstaltung, die zweite zu verkaufen. Es wird ausgelöst, nachdem die Zelle Höhe eingestellt und vor der layout-rendering. Hier ist der code der Ereignisprozedur:
Ich übersprungen habe einige details wie die Klasse Konstruktor und den code, zieht die marker (rote zahlen auf dem screenshot).
Ergebnis:
Ich denke, dieser workaround ist nicht optimal. Aber ich musste zeichnen Sie eine rote Markierung, so musste ich handle Zelle render-Ereignis, sowieso.
Hoffe, jemand kann zeigen die richtige Lösung.
InformationsquelleAutor Vadym Shulyk