Как выделить одно слово в строке жирным шрифтом в iText 7? - PullRequest
0 голосов
/ 13 июля 2020

Я могу выделить текст полужирным с помощью iText 7, например:

parExecSummHeader2.Add(new Text(subj).SetBold());

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

parExecSummHeader2.Add("Average words per sentence (the general average is 15 - 20): " + Math.Round(WordsPerSentenceInDoc, 2).ToString());
            

... но я хочу выделить вычисленное значение жирным шрифтом. Я пробовал и это:

parExecSummHeader2.Add("Average words per sentence (the general average is 15 - 20): ");
parExecSummHeader2.Add(new Text(Math.Round(WordsPerSentenceInDoc, 2).ToString().SetBold()));

... и это:

parExecSummHeader2.Add("Average words per sentence (the general average is 15 - 20): ");
string mathval = Math.Round(WordsPerSentenceInDoc, 2).ToString();
parExecSummHeader2.Add(new Text(mathval.SetBold()));

... но они оба не компилируются, жалуясь: «Ошибка CS1061 'string' не содержат определение для 'SetBold' и не может быть найден доступный метод расширения 'SetBold', принимающий первый аргумент типа 'string' "

Ответы [ 2 ]

1 голос
/ 17 июля 2020

Более короткий вариант, который может привести к неидеальному качеству рендеринга текста, поскольку вместо правильного жирного шрифта используется имитация жирного шрифта:

Paragraph parExecSummHeader2 = new Paragraph();
parExecSummHeader2.Add("Average words per sentence (the general average is 15 - 20): ");
parExecSummHeader2.Add(new Text("123").SetBold());

Вариант с большим количеством кода, но с лучшим качеством вывода, потому что правильный жирный шрифт использовать:

PdfFont boldFont = PdfFontFactory.CreateFont(StandardFonts.HELVETICA_BOLD);
Paragraph parExecSummHeader2 = new Paragraph();
parExecSummHeader2.Add("Average words per sentence (the general average is 15 - 20): ");
parExecSummHeader2.Add(new Text("123").SetFont(boldFont));
1 голос
/ 13 июля 2020

Для iText 7:

public static final Font HELVETICA_BOLD =
new Font(FontFamily.HELVETICA, 12, Font.BOLD, BaseColor.BLUE);

new Text("MyText").setFontColor(Color.BLUE)
.setFont(PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD));

У вас есть более подробные примеры здесь

Для iText 5:

 public const string DEFAULT_FONT_FAMILY = "Arial";

 public static Font SmallFontBold
    {
        get
        {
            BaseColor black = new BaseColor(0, 0, 0);
            Font font = FontFactory.GetFont(DEFAULT_FONT_FAMILY, 10, Font.BOLD, black);
            return font;
        }//get
    }//SmallFontBold

...   

Phrase aPh = new Phrase("My Bold", SmallFontBold);

И из здесь вы можете попробовать использовать его вместе.

...