Как я могу использовать обычный и жирный шрифт в одной строке с помощью iText Android - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть строка, которая состоит из постоянной части и переменной части.Я хочу, чтобы переменная была отформатирована с использованием обычного шрифта в текстовом абзаце, тогда как я хочу, чтобы константная часть была выделена жирным шрифтом.

Это мой код:

    val boldFont = Font(Font.FontFamily.TIMES_ROMAN, 22f, Font.BOLD)
    val semiBoldFont = Font(Font.FontFamily.TIMES_ROMAN, 16f, Font.BOLD)
    val normalFont = Font(Font.FontFamily.TIMES_ROMAN, 16f, Font.NORMAL)
    val lineSeparator = LineSeparator()
    lineSeparator.lineColor = BaseColor(0, 0, 0, 68)


//      NAME OF THE STUDENT
    val paragraph = Paragraph(student?.Student_Name, boldFont)
    paragraph.alignment = Paragraph.ALIGN_CENTER

//      DOB
    val paragraphTwo = Paragraph("Date of Birth: ", semiBoldFont)
    paragraphTwo.add(Chunk(student?.Student_DOB , normalFont))
    paragraphTwo.alignment = Paragraph.ALIGN_CENTER

//      Place and Country of Birth
    val paragraphThree = Paragraph("Place and Country of Birth: ", semiBoldFont)
    paragraphThree.add(Chunk(student?.Student_City + ", " + student?.Student_Country, normalFont))
    paragraphThree.alignment = Paragraph.ALIGN_CENTER

//      Address
    val paragraphFour = Paragraph("Address: ", semiBoldFont)
    paragraphFour.add(Chunk(student?.Student_Address + ", " + student?.Student_City + ", " + student?.Student_Country, normalFont))
    paragraphFour.alignment = Paragraph.ALIGN_CENTER

//      Nationality
    val paragraphFive = Paragraph("Nationality: ", normalFont)
    paragraphFive.add(Chunk(student?.Student_Nationality_One + ", " + student?.Student_Nationality_Two, normalFont))
    paragraphFive.alignment = Paragraph.ALIGN_CENTER

try {
        document.add(paragraph)
        document.add(Chunk(lineSeparator))
        document.add(paragraphTwo)
        document.add(paragraphThree)
        document.add(paragraphFour)
        document.add(paragraphFive)

        if (educationList.size > 0) {
            document.add(Paragraph("Education", boldFont))
            document.add(Paragraph(" "))
        }

    } catch (e: DocumentException) {
        e.printStackTrace()
    }

Вывод: enter image description here

1 Ответ

0 голосов
/ 20 февраля 2019

Если вы установите шрифт в конструкторе Paragraph, шрифт, используемый для добавленного позже объекта Chunk, будет шрифтом этого фрагмента , дополненного данными из шрифта абзаца в свойствах, не заданных вшрифт chunk .

Стиль шрифта - это битовое поле, и, к сожалению, это добавление в поле стиля реализовано с помощью побитовой ориентации.,Таким образом, флаг BOLD от шрифта абзаца устанавливается на стили всех кусков, добавляемых в абзац!

Вы можете обойти это, не устанавливая шрифт на уровне абзацавообще (или, по крайней мере, не шрифт с битами стиля), а также добавление метки в виде отдельного фрагмента, например вместо

// DOB
val paragraphTwo = Paragraph("Date of Birth: ", semiBoldFont)
paragraphTwo.add(Chunk(student?.Student_DOB , normalFont))
paragraphTwo.alignment = Paragraph.ALIGN_CENTER

do

// DOB
val paragraphTwo = Paragraph()
paragraphTwo.add(Chunk("Date of Birth: ", semiBoldFont))
paragraphTwo.add(Chunk(student?.Student_DOB , normalFont))
paragraphTwo.alignment = Paragraph.ALIGN_CENTER

или, возможно,

// DOB
val paragraphTwo = Paragraph("", normalFont)
paragraphTwo.add(Chunk("Date of Birth: ", semiBoldFont))
paragraphTwo.add(Chunk(student?.Student_DOB , normalFont))
paragraphTwo.alignment = Paragraph.ALIGN_CENTER

(Разница между этими опциями заключается в том, что на основе информации о шрифте абзаца перед абзацем добавляется некоторый интервал).

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