2014-10-07 11 views
9

Ich benutze com.lowagie.text, um PDF in meinem Code zu erstellen. Alles funktioniert einwandfrei, außer dass ich versuche, den Inhalt meiner Zellen vertikal auszurichten. Ich möchte, dass sich der Zellentext in der Mitte der Zellenhöhe befindet.Vertikale Ausrichtung von PDF-Zellen mit com.lowagie.text

Dies ist mein Code

PdfPCell cell = new PdfPCell(new Phrase(value, fontValueNew)); 
cell.setBorder(o); 
cell.setBackgroundColor(new Color(233,232,232)); 
cell.setHorizontalAlignment(Element.ALIGN_LEFT); 
cell.setVerticalAlignment(Element.ALIGN_MIDDLE); 

Hier wird die horizontale Ausrichtung in Ordnung, aber die vertikale Ausrichtung arbeiten, ist nicht wirksam.

+0

Wo ist es zeigt, die in der Zelle nach oben? Kannst du uns zeigen? – generalcrispy

+2

Siehe hierzu: http://StackOverflow.com/q/5554553/3324704 – fonkap

+0

Mögliches Duplikat der vertikalen Ausrichtung von [iText: PdfTable-Zellen] (https://StackOverflow.com/questions/5554553/itext-pdftable-cell-vertical- Ausrichtung) –

Antwort

0

Ich bin mir nicht sicher, warum, aber das funktioniert für mich (vertikal zentrierte Ausrichtung):

String headingLabel = "Test"; 

Paragraph heading = new Paragraph(headingLabel, 
     new Font(helvetica, 28, Font.NORMAL, new BaseColor(0, 0, 0))); 

Float textWidth = ColumnText.getWidth(heading); 
Float maxAllowed = 630f; 

while (maxAllowed < textWidth) { 
    fontSize -= 2; 
    heading = new Paragraph(headingLabel, 
     new Font(helvetica, fontSize, Font.NORMAL, new BaseColor(0, 0, 0))); 
    textWidth = ColumnText.getWidth(heading); 
} 

heading.setAlignment(Element.ALIGN_CENTER); 

PdfPCell titleCell = new PdfPCell(); 
titleCell.setHorizontalAlignment(Element.ALIGN_CENTER); 
titleCell.setVerticalAlignment(Element.ALIGN_TOP); 
titleCell.addElement(heading); 
titleCell.setFixedHeight(65f); 
headerTable.addCell(titleCell); 
0

ALIGN_MIDDLE hat 5 Integer-Wert in der der Code iText definiert. Bitte achten Sie beim Schreiben von ALIGN_MIDDLE auf einen Tipp "Mögliche Wert für vertikales Element." Es bedeutet, dass wenn Ihr Element in vertikaler Ausrichtung ist, es funktioniert, wenn es die Mitte des Elements berechnet. Mein Vorschlag ist, ALIGN_MIDDLE mit ALIGN_CENTER zu ersetzen, damit Ihr Code aussehen wird:

diese
cell.setVerticalAlignment(Element.ALIGN_CENTER); 
0

Versuchen:

PdfPCell cell = new PdfPCell(new Phrase(value, fontValueNew)); 
cell.setBorder(o); 
cell.setBackgroundColor(new Color(233,232,232)); 
cell.setHorizontalAlignment(Element.ALIGN_LEFT); 
cell.setVerticalAlignment(Element.ALIGN_CENTER);