Как добавить новые шрифты в Itext, используя Java - PullRequest
17 голосов
/ 03 августа 2011

когда я хочу использовать шрифт iText, я делаю следующее:

protected final static Font FONT_SIZE_11_BOLD = new Font(Font.HELVETICA, 11f, Font.BOLD);

и тогда я могу использовать его везде, где захочу, следующим образом:

monthSize11 = new Chunk(month, FONT_SIZE_11_BOLD);

Я хочу использовать Arial вместо HELVETICA, но Arial недоступен напрямую. Я имею в виду, я не могу сделать

new Font(Font.ARIAL, 11f, Font.BOLD);

потому что Arial не определен в классе Font, но файл Arial.ttf находится в моей системе в C: \ WINDOWS \ Fonts. Вопрос в том, как связать файл Arial.ttf с iText и как его использовать.

Заранее большое спасибо.

РЕДАКТИРОВАТЬ: Я хотел бы использовать собственные шрифты. Я имею в виду, у меня есть файл myCompany.ttf, в котором определены собственные шрифты, и в некоторых местах я должен их использовать. Проблема не только с Arial.

Ответы [ 4 ]

24 голосов
/ 18 декабря 2013

Загрузите его изнутри JAR , используя начальную косую черту; в противном случае используйте абсолютный путь вашего шрифта (C:\...\fonts\Sansation_Regular.ttf). Например:

Font font = FontFactory.getFont("/fonts/Sansation_Regular.ttf",
    BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 0.8f, Font.NORMAL, BaseColor.BLACK);
BaseFont baseFont = font.getBaseFont();
  • Относительный путь шрифта: 'src / main / resources / fonts'
  • Использование Itext 5.4.5
  • Пример кода
24 голосов
/ 03 августа 2011
BaseFont base = BaseFont.createFont("c:/windows/fonts/arial.ttf", BaseFont.WINANSI);
Font font = new Font(base, 11f, Font.BOLD);
....

Подробнее здесь .

3 голосов
/ 03 августа 2011

Используйте BaseFont.createFont для создания нового объекта Font.

Вы можете передать любой шрифт Type1 или TTF.Вам просто нужно убедиться, что ваш файл шрифта распространяется вместе с ним.См. BaseFont API

1 голос
/ 22 марта 2016

Создание пользовательских шрифтов с использованием itext просто

Я написал код для того же самого ниже

Определенно поможет кому-то

public class CustomFontStyle {
    public static void main(String[] args) {

        // creation of the document with a certain size and certain margins
        // may want to use PageSize.LETTER instead
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        try {
            // creation of the different writers
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("CustomFontsStyle.pdf"));
            final String NEWLINE = "\n";
            document.open();
            Phrase phrase = new Phrase();

            BaseFont baseFont3 = BaseFont.createFont("Xenotron.ttf", BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
            Font font2 = new Font(baseFont3, 12);

            document.add(new Paragraph("Custom Xenotron Font: ", font2));

            phrase.add(NEWLINE);

            document.add(phrase);

            document.close();

        }
        catch (Exception ex) {
            System.err.println(ex.getMessage());
        }
    }

}
...