iText 7 - Центр выравнивания текста и абзацев - PullRequest
0 голосов
/ 10 сентября 2018

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

baseCanvas.ShowTextAligned("Header 1", 555, 839, TextAlignment.CENTER, 0);
baseCanvas.ShowTextAligned("Test test test ...", 240, 809, TextAlignment.CENTER, 0);

Вот вывод PDF:

Output

Однако я пытаюсь добиться следующего: Design

Я проверил документацию по iText, но есть ли способ сделать это без необходимости создавать таблицы и ячейки?

1 Ответ

0 голосов
/ 10 сентября 2018

Когда вы делаете:

baseCanvas.ShowTextAligned("Some text", x, y, TextAlignment.CENTER, 0);

Тогда вы хотите, чтобы координата (x, y) совпадала с серединой текста "some text".

В вашем фрагменте кода вы центрировалисьтекст вокруг координаты (555, 839) и текст вокруг координаты (40, 809), объясняющий разницу.

Поскольку вы используете iText 7, почему бы вам не воспользоваться тем, что теперь вы можете легкопозиция Paragraph объекты в абсолютных позициях?Учебное пособие по началу работы с iText 7 для .NET уже знакомит с некоторыми базовыми строительными блоками, но учебное пособие по строительным блокам углубляется в подробности.

Посмотритев первом примере глава 2 и измените его следующим образом:

PdfPage page = pdf.AddNewPage();
PdfCanvas pdfCanvas = new PdfCanvas(page);
Rectangle rectangle = new Rectangle(36, 650, 100, 100);
Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle);
PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont bold = PdfFontFactory.createFont(FontConstants.TIMES_BOLD);
Text title =
    new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").SetFont(bold);
Text author = new Text("Robert Louis Stevenson").SetFont(font);
Paragraph p = new Paragraph().Add(title).Add(" by ").Add(author);
p.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);
canvas.Add(p);
canvas.Close();

Это должно добавить текст внутри прямоугольника (36, 650, 100, 100) и центрировать все содержимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...