IText, Что происходит с Font, BaseFont и createFont()?

Есть много загадок для меня о том, что происходит с шрифтом и basefont. Особенно, когда речь идет о конструкторе. Веб-сайт iText предоставляет эту строку в качестве примера кода для новых шрифтов

 BaseFont unicode = BaseFont.createFont("c:/windows/fonts/arialuni.ttf", 
                        BaseFont.IDENTITY_H, 
                        BaseFont.EMBEDDED);

Я могу заставить этот вызов работать:

BaseFont bf = BaseFont.createFont(BaseFont.COURIER, BaseFont.CP1257, 
                  BaseFont.EMBEDDED);

Но если я заменил BaseFont.CP1257 словом BaseFont.HELVETICA, тогда это не сработает, и я получаю страницу, в которой говорится: "Не удалось загрузить документ в формате pdf".

Я попытался просмотреть файл класса, и я не могу понять, что этот второй параметр (я предполагаю, что это что-то вроде резервного шрифта, если первый шрифт не работает, как в HTML) и я не могу понять, почему некоторые шрифты будут работать, а не другие.

Ответ 1

Чтобы загрузить его изнутри вашего баннера, используйте ведущую косую черту в противном случае, просто используйте абсолютный путь вашего шрифта ( "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();

Ответ 3

Это то, что сработало для меня. Старый пост, но я не мог найти простой ответ.

//Here you setup the font that you want. I put it under the root/Content/fonts folder in my project
Font font = FontFactory.GetFont("~/Content/fonts/ARIALN.ttf", BaseFont.CP1252,false, 9);

//Here I create the paragraph then assign the font to it at the end
var addressAttn = new Paragraph("Attn:  Manager, Billing Services", font);