Вертикальное выравнивание не работает в композитном режиме - PullRequest
4 голосов
/ 10 декабря 2010

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

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 ]

5 голосов
/ 23 июня 2011

С 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);

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

Еще немного информации (на Java, но все еще применимо) http://tutorials.jenkov.com/java-itext/table.html#cell-modes

2 голосов
/ 10 декабря 2010

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

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