Как изменить шрифты Itextsharp для ShowTextAligned - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь изменить шрифт для строки при создании PDF, но безрезультатно. Шутка, цвет меняется, простите, если это какая-то глупая ошибка.

Я пробовал разные подходы от гулянки.

var bf = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
pdfContentByte.SetColorFill(BaseColor.RED);
pdfContentByte.SetFontAndSize(bf, 15);


pdfContentByte.BeginText();
ColumnText.ShowTextAligned(pdfContentByte, Element.ALIGN_LEFT, new Phrase(ProjNr), 60, 130, 0);
pdfContentByte.EndText();

Я просто хочу изменить шрифты для разных типов текстов

1 Ответ

1 голос
/ 11 июля 2019

Ваш код смешивает уровни API.

Когда вы вызываете PdfContentByte методы напрямую, вы работаете на самом низком уровне API, записывая инструкции непосредственно в поток содержимого страницы.

Где вы звоните ColumnText.ShowTextAligned, с другой стороны, вы на среднем уровне API. На этом уровне классы iText (например, ColumnText) сами создают все необходимые инструкции в основном потоке контента страницы; фактически ваши прямые письменные инструкции мешают выполнению инструкций, написанных ColumnText, и приводят к неверным последовательностям инструкций.

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

В этом случае вы объединяете BaseFont, размер шрифта и цвет текста в объект Font, добавляете этот шрифт к объекту Phrase, а затем позволяете iText выполнять всю работу:

var bf = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, 15, Font.NORMAL, BaseColor.RED);

ColumnText.ShowTextAligned(pdfContentByte, Element.ALIGN_LEFT, new Phrase(ProjNr, font), 60, 130, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...