По Лоуаги:
PdfPCell cell = new PdfPCell(new Phrase("blah Blah blah");
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
Это всегда правильно в техническом смысле, но иногда выглядит плохо.
Для центрирования нарисуйте прямоугольник вокруг объекта, найдите его середину и выровняйте его по центру окружающего объекта.
Таким образом, iText находит центр фразы и выравнивает ее. Но человеческие глаза иногда фокусируются на основной части текста, скажем, на частях шрифта между базовой линией и высотой кепки. Поэтому, чтобы это выглядело хорошо, вам нужно отцентрироваться относительно этого.
Phrase content = new Phrase("Blah blah blah", Font);
Float fontSize = content.getFont().getSize();
Float capHeight = content.getFont().getBaseFont().getFontDescriptor(BaseFont.CAPHEIGHT, fontSize);
Float padding = 5f;
PdfPCell cell = new PdfPCell(content);
cell.setPadding(padding);
cell.setPaddingTop(capHeight - fontSize + padding);
Обратите внимание, что метод PdfPCell setVerticalAlignment (..) не используется.
Кажется, что это не обязательно будет работать для многострочной фразы, но это так.
Проблема была бы очевидна, если бы iText мог показывать ограничивающие рамки вокруг вещей (учтите, вы можете сказать iText рисовать ограничивающие рамки, это просто больше работы, чем волшебный выключатель).
Это решение адаптировано из электронного письма от Пауло Соареса .