2010-12-09 4 views
4

Следующее должно работать в соответствии с документацией, но оно не работает для меня. Я что-то упускаю?Вертикальное выравнивание не работает в композитном режиме

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; 

ответ

2

Ах. Вам нужно установить вертикальное выравнивание PdfCell, а не абзац.

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

Я установлена ​​вертикальная – Rod

+1

Тогда не установлен вместо ... нет ничего подобного абзаца в пункте вертикального выравнивания. Хм. Я предлагаю добавить 'Chunk' или' Phrase' вместо 'Paragraph'. Похоже, что этот абзац расширяется для заполнения горизонтальной области. Используя меньший строительный блок, я надеюсь предотвратить это и позволить правильному выравниванию ячейки. Все еще не уверен, что это сработает. –

+0

Видимо это было. –

5

Вещь с iTextSharp заключается в том, что она будет вести себя по-разному в зависимости от того, какой конструктор вы используете. Это не выравнивать текст:

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

Но это будет:

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

Я не знаю, почему именно это, то есть что-то делать с сота, находясь в «тексте mode ", если вы добавите фразу в конструкторе в« составной режим », если вы добавите ее позже (в этом случае каждый объект должен следить за своим собственным выравниванием).

Некоторые подробнее (в Java, но по-прежнему применяется) http://tutorials.jenkov.com/java-itext/table.html#cell-modes

Смежные вопросы