Летающая тарелка iTextPDF Китайские шрифты

Я использую FlyingSaucer (версия R8pre2) для преобразования XHTML в PDF.

HTML содержит китайские символы и использует шрифты MS Mincho.

Документ был преобразован, но в преобразованном PDF-файле отсутствуют все китайские иероглифы.

Любая идея, как решить эту проблему?

Код:

OutputStream os = new FileOutputStream("output.pdf");
String inputFile = "input.html";
String url = new File(inputFile).toURI().toURL().toString();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
os.close();

person Christopher Guray    schedule 29.05.2013    source источник
comment
Можете ли вы показать свои исходные коды?   -  person Raptor    schedule 29.05.2013
comment
См. обновленный вопрос с кодом для преобразования XHTML в PDF.   -  person Christopher Guray    schedule 29.05.2013
comment
Я не видел, чтобы ты загружал шрифты. Загрузите китайские шрифты и убедитесь, что содержимое находится в кодировке UTF-8. Аналогичный случай: stackoverflow.com/questions/10231194/   -  person Raptor    schedule 29.05.2013
comment
Я понимаю. Китайские иероглифы теперь отображаются в сгенерированном PDF-файле после загрузки необходимых шрифтов. Спасибо :)   -  person Christopher Guray    schedule 29.05.2013


Ответы (1)


Китайский шрифт необходимо загрузить перед отображением китайского шрифта. Например:

renderer.getFontResolver().addFont("fonts/TIMES.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("fonts/TIMESBD.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("fonts/TIMESBI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("fonts/TIMESI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
person Raptor    schedule 29.05.2013