2010-12-09 5 views
4

Ce qui suit devrait fonctionner selon la documentation, mais cela ne fonctionne pas pour moi. Est-ce que je manque quelque chose?L'alignement vertical ne fonctionne pas en mode composite

PdfPTable rs1 = new PdfPTable(1); 
PdfPCell c = new PdfPCell(); 

Paragraph p = new Paragraph("some text to align"); 

c.AddElement(p); 
c.VerticalAlignment = Element.ALIGN_MIDDLE; 

rs1.AddCell(c); 
rs1.AddCell("more text"); 

return rs1; 

Répondre

2

Ah. Vous devez définir l'alignement vertical de PdfCell, pas le paragraphe.

PdfPCell c = new PdfPCell(); 
c.setVerticalAlignment(Element.ALIGN_MIDDLE); 
... 
+0

Je ne mets la verticale – Rod

+1

ensuite à la place du défini au paragraphe ... non pas une telle chose que le paragraphe alignement vertical. Hmm. Je suggère d'ajouter un 'Chunk' ou' Phrase' au lieu d'un 'Paragraph'. Il semblerait que le paragraphe se développe pour remplir la zone horizontale. En utilisant un bloc de construction plus petit, j'espère éviter cela et laisser l'alignement des cellules fonctionner correctement. Toujours pas sûr que ça va marcher. –

+0

Apparemment, il l'a fait. –

5

La chose avec iTextSharp est qu'il se comportera différemment selon le constructeur que vous utilisez. Ce ne sera pas aligner le texte:

PdfPCell c = new PdfPCell(); 
c.Add(new Phrase("Whatever")); 
c.setHorizontalAlignment(Element.ALIGN_CENTER); 

Mais cette volonté:

PdfPCell c = new PdfPCell(new Phrase("Whatever")); 
c.setHorizontalAlignment(Element.ALIGN_CENTER); 

Je ne sais pas exactement pourquoi il en est, il a quelque chose à voir avec la cellule étant en « texte mode 'si vous ajoutez l'expression dans le constructeur par rapport à' mode composite 'si vous l'ajoutez plus tard (auquel cas chaque objet est censé s'occuper de son propre alignement).

Un peu plus d'informations (en Java, mais applique encore) http://tutorials.jenkov.com/java-itext/table.html#cell-modes

Questions connexes