PDFBox True Type шрифт полужирный - PullRequest
       7

PDFBox True Type шрифт полужирный

0 голосов
/ 01 октября 2018

Я разрабатываю приложение, которое должно создавать PDF-файл с разными стилями шрифта (иногда жирным шрифтом, иногда курсивом, а иногда и обычным шрифтом).Я должен использовать шрифт Eras Medium BT (True Type), и я загружаю его, используя локальный файл с именем «erasm.TTF».Мой вопрос: как я могу нарисовать текст жирным шрифтом или курсивом, используя мой файл шрифта Eras?

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

public Font getFontErasMDBTBold9(){
    FontFactory.register(fontPath + "erasm.TTF", "ERASM");
    fontErasMDBT9 = FontFactory.getFont("ERASM", 9, Font.BOLD, Color.BLACK);
    return fontErasMDBT9;
}

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

Можно ли открыть шрифт жирным шрифтом или курсивом, как вIText

1 Ответ

0 голосов
/ 03 октября 2018

Спасибо за ваши комментарии и советы.Наконец, я использовал метод setRenderingMode класса PDFPageContentStream, чтобы установить различные стили моего текста.Вот частный метод написания текста с желаемым режимом рендеринга:

private void writeText(PDPageContentStream contentStream, String text, PDFont font, 
                       int size, float xPos, float yPos, RenderingMode renderMode = RenderingMode.FILL) {
    contentStream.beginText()
    contentStream.setFont(font, size)
    contentStream.newLineAtOffset(xPos, yPos)
    contentStream.setRenderingMode(renderMode)
    contentStream.showText(text)
    contentStream.endText()
}

А вот код для написания обычного текста и полужирного текста.

private void addFrontPage(PDDocument document) {
    PDPage frontPage = newPage()

    PDPageContentStream contentStream = new PDPageContentStream(document, frontPage)

    // Write text
    String text = "This is a bold text"
    writeText(contentStream, text, eras, 18, 25, 500, RenderingMode.FILL_STROKE)

    text = "and this is a regular text"
    writeText(contentStream, text, eras, 9, 25, 480)

    contentStream.close()
    document.addPage(frontPage)
}

Примечание : код написан на языке Groovy.

...