2010-10-04 4 views
2

Мне сложно создавать PDF-файлы, содержащие греческие буквы, используя itextpdf. Я читаю строки из внешнего источника как строки UTF-8. Английские буквы появляются в результатах, но не греческие. Поиск проблемы, я думаю, это может быть связано с используемым шрифтом. Я не знаю, какой файл ttf использовать, если это проблема. Вот как я создаю шрифтitext PDF - Греческие буквы не отображаются в полученном PDF-документе

BaseFont bfTimes = BaseFont.createFont(FontFactory.HELVETICA,"UTF-8", BaseFont.EMBEDDED); 
Font times = new Font(bfTimes, 12, Font.BOLD); 

любая помощь сердечно признателен!

ответ

5

Вам нужно использовать шрифт с греческими символами. Вы можете найти греческие шрифты unicode here.

Вы можете проверить пример here по использованию юникодовых шрифтов у автора itext.

+0

пример, на который вы указали, чрезвычайно полезен. Я закончил использование arialuni.ttl, и он работает. Большое спасибо! – fadmaa

+1

Не могли бы вы указать на пример? Ссылка мертва :( –

+0

@Yiannis Gkoufas: var bf = BaseFont.CreateFont (UnicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); – user2173353

0

На самом деле проблема может привести к созданию шрифта. Вместо передачи «UTF-8» в качестве кодовой страницы попробуйте использовать «CP1253».

BaseFont bfTimes = BaseFont.createFont(FontFactory.HELVETICA,"CP1253", BaseFont.EMBEDDED); 
Font times = new Font(bfTimes, 12, Font.BOLD); 

Btw, BASEFONT имеет статические строки constnts для CP1250, CP1252 и CP1257 ...

0

Я использовал этот код:

BaseFont fonty = BaseFont.createFont("assets/ARIALBD.TTF", BaseFont.IDENTITY_H,  BaseFont.NOT_EMBEDDED); 
    fonty.setSubset(true); 
    Phrase myName = new Phrase("Your Not Latin Words", new Font(fonty,12)); 
    ColumnText.showTextAligned(canvas, 
      Element.ALIGN_LEFT, myName, 66, 400, 0); 

я должен был вставить ARIALBD.TTF в папку активов