Арабский в itext - PullRequest
       13

Арабский в itext

3 голосов
/ 28 февраля 2011

Я пытаюсь напечатать арабский текст в ячейке внутри таблицы (в формате pdf), используя Itext со следующим кодом

Font f = FontFactory.getFont("C:\\Windows\\Fonts\\arabtype.ttf");
t.addCell(new Cell(new Phrase(name,f)));

Где name - арабский текст Но он печатает "????" вместо арабского текста

Ответы [ 2 ]

6 голосов
/ 10 июля 2013

Вы можете использовать com.itextpdf.text.pdf.languages.ArabicLigaturizer в itextpdf 5.4.2 следующим образом:

LanguageProcessor al = new ArabicLigaturizer();
preface.add(new Paragraph(al.process("گزارش"), font));
5 голосов
/ 09 марта 2011

Кодировка по умолчанию для FontFactory.getFont() (и почти везде в iText) хранится в (поисковый поиск) ОБЩЕСТВЕННАЯ СТРОКА! Это облегчает жизнь ... FontFactoryImp.defaultEncoding. Это инициализируется как BaseFont.WINANSI (кодовая страница (cp) 1252, если я правильно помню).

Я рекомендую установить его на BaseFont.IDENTITY_H:

myFontFactory.getFontImp().defaultEncoding = BaseFont.IDENTITY_H

Недостаток * в использовании «Identity H» заключается в том, что шрифты, использующие его, вынуждаются быть встроенными подмножествами. Если вы не хотите встраивать шрифт, вы не можете использовать «Идентичность H».

...