2016-06-26 8 views
1

Ich habe ein Problem mit der vertikalen Ausrichtung in einer Tabelle. Der Text ist zu nahe an der unteren Grenze:Wie man die vertikale Position des Textes in einer Zelle zwickt?

enter image description here

Mein Code sieht wie folgt aus:

nested = new PdfPTable(3); 
nested.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE; 
nested.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER; 
nested.WidthPercentage = 100; 
nested.AddCell(new Phrase("blablabla")); 
nested.AddCell(new Phrase("blablabla")); 
nested.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT; 
nested.AddCell(new Phrase("Stand: " + 
pdfdoc.Add(nested); 

Hinzufügen oder Entfernen der Linie DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE; keine Auswirkungen haben.

+0

ich meine die vertikale Ausrichtung, der Text ist fast auf der Grenze nicht in der Mitte notiert. Ich werde meinen Code durch Align Center thx ersetzen! aber es gibt keine Option für eine Tabelle mit Ausrichtung. und nested.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE; funktioniert nicht. – Cezary88

+0

Ich habe deine Frage aktualisiert. Jetzt kann es beantwortet werden. –

+0

Entschuldigung Jungs, das ist mein erster Beitrag. Ich werde es nächstes Mal besser machen. Ich verwende itextsharp 5.5.9. – Cezary88

Antwort

0

Sie erstellen PdfCell Objekt mit nur einer Textzeile. Die Höhe der Zelle wird basierend auf dieser Textzeile bestimmt. Der Text wird automatisch in der Mitte ausgerichtet. Das erklärt, warum das Hinzufügen oder Entfernen von DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE; keinen Effekt hat: Soweit Text betroffen ist, ist der Text bereits in der Mitte ausgerichtet.

Sie behaupten, dass dies nicht wahr ist, weil es Ihrer Wahrnehmung entspricht, dass die Grundlinie des Textes zu nahe am unteren Rand liegt. Ich verstehe, dass Anspruch, aber wenn Ihr meine Antwort auf die Frage lesen How does a PdfPCell's height relate to the font size? sollten Sie verstehen, welche Faktoren schaffen, dass die Wahrnehmung:

  1. Die führende: die Standard-Schriftgröße 12 pt; Die Standardvorgabe ist 18 pt. Ein Vorsprung von 18 pt ist etwas hoch und führt zu mehr Platz über der Grundlinie. Wenn Sie den Abstand verringern, sehen Sie, dass oben weniger Platz ist.
  2. Verschiedene Schriftarten haben unterschiedliche Ober- und Unterlängen; So wie Sie die Zellen hinzufügen, wird iText diese Werte nicht berücksichtigen.

Mein Vorschlag: iText erzählen die ascender und Abseilgerät der Schriftart zu verwenden, die Sie verwenden:

nested.DefaultCell.UseAscender = true; 
nested.DefaultCell.UseDescender = true; 

Sie werden bemerken, dass die Position des Textes schon viel besser sein wird. Wenn es nicht besser ist, möchten Sie vielleicht etwas Polsterung hinzufügen. All dies ist natürlich in der official documentation erläutert, wo Sie ein Beispiel namens Spacing.cs finden. Versuchen Sie dieses Beispiel und Sie werden sehen, wie sich die Position des Inhalts ändert, indem Sie Werte wie UseAscender, UseDescender, Padding und so weiter optimieren.

+0

das hat mein Problem gelöst, thx! – Cezary88