2012-09-08 2 views
0

Это метод внутри моего Resources.class:Создание шрифтов из * .ttf файлов с помощью IText

public static Font loadFont(String fontFileName) 
    { 
     BaseFont base = null; 

     try 
     { 
      base = BaseFont.createFont(Resource.class.getResource(fontFileName + "_font.ttf").toString(), BaseFont.WINANSI, true); 
     } 
     catch (DocumentException | IOException e) 
     { 
      e.printStackTrace(); 
     } 

     Font font = new Font(base, Font.BOLD, 15); 
     return font; 
    } 

Структура моей программы является:

src (folder) 
    core (package) 
     //all (but one) classes used for program 
    resources (package) 
     class Resources (used to load resources into the "core" classes) 
     wingding_font.ttf 

Это фрагмент кода, который не работают:

p = new Phrase("some random text"); 
p.setFont(Resource.loadFont("wingding")); 
pa = new Paragraph(p); 
pa.setFont(Resource.loadFont("wingding")); 
document.add(pa); 

Когда я открываю PDF, текст есть, но некоторые шрифты, который я предполагаю, шрифт по умолчанию используются.

Note1: Я попытался установить шрифт только для фразы (p) и только для абзаца (pa), но никак не изменил результат.

Note2: Resource.loadFont ("крыло"); методы try/catch не «ловят» любые ошибки.

+0

Вы не можете создавать шрифт каждый раз. –

ответ

4

Попытки создать внедренный объект шрифта и использовать этот шрифт для отображения текста:

//this code should run once at initialization/application startup 
FontFactory.register("resources/wingding_font.ttf"); 
Font textFont = FontFactory.getFont("wingding", BaseFont.IDENTITY_H, 
    BaseFont.EMBEDDED, 10); //10 is the size 
... 
//reuse the reference to the font object when rendering your text 
Paragraph p = new Paragraph("someText", textFont); 

Кстати, IText имеет класс FontFactory, чтобы помочь загрузить шрифты, вам не нужно больше loadFont метод в вашем Resources.

Надеюсь, это поможет.

+0

Ну, это казалось многообещающим, но я получил тот же результат ... – Karlovsky120

+0

Может ли это быть кодировка? – Karlovsky120

+0

Не нужно, я просто решил, что кодирование должно быть «BaseFont.IDENTITY_H' ... Спасибо в любом случае! =) – Karlovsky120

Смежные вопросы