2013-06-20 2 views
6

Когда я использую выравнивание ячейки, так что работает:iTextSharp: какие свойства выравнивания используются в PdfPCell?

PdfPCell cell1 = new PdfPCell(new Phrase("Text" , Font)); 
cell1.HorizontalAlignment = 2; 

Но как только выравнивание не работает:

PdfPCell cell1 = new PdfPCell(); 
cell1.AddElement(new Phrase("Text 1", Font)); 
cell1.AddElement(new Phrase("Text 2", Font)); 
cell1.HorizontalAlignment = 2; 

причина?

ответ

8

Вы вводите в заблуждение текстовый режим с композитный режим.

В первом фрагменте кода вы работаете в текстовом режиме. Это означает, что содержимое ячейки считается только текстовым, и свойства ячейки соблюдаются, тогда как свойства элементов, добавленных в ячейку, игнорируются.

Во втором фрагменте кода вы работаете в композитном режиме. Ячейка переключается на композитный режим в тот момент, когда вы используете метод AddElement(). В этом случае свойства ячейки игнорируются. Вместо этого используются свойства элементов.

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

+0

Таким образом, в «текстовом режиме» не может быть ячейки, в которой есть «cell.HorizontalAlignment = Element.ALIGN_CENTER' +» cell.VerticalAlignment = Element.ALIGN_MIDDLE'. Это один из вариантов, а не оба выравнивания одновременно? –

+0

В * композитном режиме * (не * текстовый режим *) любое значение, установленное для 'cell.HorizontalAlignment', будет проигнорировано в пользу горизонтального выравнивания элементов в ячейке. Я ничего не говорил о вертикальном выравнивании. Это не свойство 'Paragraph',' Image', ... –

4

Теперь да, это сработало.

PdfPCell cell1 = new PdfPCell(); 
Paragraph p1 = new Paragraph("Text 1", Font); 
p1.Alignment = Element.ALIGN_RIGHT; 
Paragraph p2 = new Paragraph("Text 2", Font); 
p2.Alignment = Element.ALIGN_RIGHT; 

cell1.AddElement(p1); 
cell1.AddElement(p2); 

спасибо.

+0

Ha этот ответ на самом деле имеет пример кода, который работает –

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