#java #fonts #itext
#java #шрифты #itext
Вопрос:
У меня есть веб-приложение, которое будет генерировать PDF-файл из данных и разрешать пользователю загружать. У нас есть пользовательский шрифт, поэтому я регистрирую четыре файла шрифтов (обычные, полужирные, курсивные и полужирные курсивные ttf-файлы).
-
Это необходимо? Могу ли я просто использовать обычный файл шрифта и установить вес / стили через класс шрифтов или мне нужны все файлы? Похоже, что все работает нормально, но я все еще учусь.
-
Какая хорошая стратегия или шаблон для управления этими разными шрифтами для добавления в мои документы? Кто-нибудь много сделал с этим с точки зрения Java?
Ответ №1:
Вы не говорите нам, как вы регистрируете свои шрифты и как вы их используете, поэтому позвольте мне рассказать вам, как я буду работать (я оригинальный разработчик iText). Если вы используете эти 4 шрифта, лучший способ — зарегистрировать их следующим образом:
BaseFont bfRegular = BaseFont.createFont(regularTTF, BaseFont.IDENTITY_H, BaseFont_EMBEDDED);
BaseFont bfBold = BaseFont.createFont(boldTTF, BaseFont.IDENTITY_H, BaseFont_EMBEDDED);
BaseFont bfItalic = BaseFont.createFont(italicTTF, BaseFont.IDENTITY_H, BaseFont_EMBEDDED);
BaseFont bfBoldItalic = BaseFont.createFont(boldItalicTTF, BaseFont.IDENTITY_H, BaseFont_EMBEDDED);
Я бы использовал эти BaseFont
экземпляры всякий раз, когда добавлял контент с использованием низкоуровневых операций.
Тогда я бы сделал:
Font fRegular = new Font(bfRegular, 12);
Font fBold = new Font(bfBold, 12);
Font fItalic = new Font(bfItalic, 12);
Font fBoldItalic = new Font(bfBoldItalic, 12);
Я бы использовал эти шрифты всякий раз, когда мне нужно создать объект высокого уровня, такой как Paragraph
.
Конечно, мне также может понадобиться что-то вроде этого:
Font fRegularSmall = new Font(bfRegular, 9);
Font fBoldSmall = new Font(bfBold, 9);
Font fItalicSmall = new Font(bfItalic, 9);
Font fBoldItalicSmall = new Font(bfBoldItalic, 9);
Font fRegularBig = new Font(bfRegular, 20);
Font fBoldBig = new Font(bfBold, 20);
Font fItalicBig = new Font(bfItalic, 20);
Font fBoldItalicBig = new Font(bfBoldItalic, 20);
Обычно я создаю вспомогательный класс, в котором я создаю BaseFont
объекты только один раз (их нужно использовать повторно), и я создаю геттеры для Font
объектов.