Генерация PDF из HTML с нелатинскими символами с использованием ITextRenderer не работает.

Уже второй день я провожу исследования безрезультатно. По крайней мере, теперь я могу спросить что-то очень конкретное.

Я пытаюсь написать правильный HTML-код, содержащий некоторые нелатинские символы в файле PDF, используя iTextи, более конкретно, используя ITextRendererиз Flying Saucer. ].

Мой короткий пример/код начинается с инициализации строковой переменной doc со следующим значением:

String doc = ""
            + "Some greek characters: Καλημέρα Some greek characters"
            + "";

Вот код, который я использую для целей отладки. Я сохраняю эту строку в HTML-файл, а затем открываю ее в браузере, чтобы еще раз убедиться, что HTML-содержимое корректно и я все еще могу читать греческие символы:

//write for debugging purposes in an html file
File newTextFile = new File("C:/work/test.html");
FileWriter fw = new FileWriter(newTextFile);
fw.write(doc);
fw.close();

Следующий шаг — попытаться записать это значение в PDF-файл. Вот мой код:

ITextRenderer renderer = new ITextRenderer();
    //add some fonts - if paths are not right, an exception will be thrown
    renderer.getFontResolver().addFont("c:/work/fonts/TIMES.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    renderer.getFontResolver().addFont("c:/work/fonts/TIMESBD.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    renderer.getFontResolver().addFont("c:/work/fonts/TIMESBI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    renderer.getFontResolver().addFont("c:/work/fonts/TIMESI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);


    final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
            .newInstance();
    documentBuilderFactory.setValidating(false);
    DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
    builder.setEntityResolver(FSEntityResolver.instance());
    org.w3c.dom.Document document = builder.parse(new ByteArrayInputStream(
            doc.toString().getBytes("UTF-8")));

    renderer.setDocument(document, null);
    renderer.layout();
    renderer.createPDF(os);

Конечный результат моего кода:

В файле HTMLЯ получаю: Некоторые греческие символы: Καλημέρα Некоторые греческие символы(ожидается)

В PDF файл Я получаю: Некоторые греческие символы: Некоторые греческие символы ( неожиданное - греческие символы игнорируются!!)

Зависимости:

  • версия java "1.6.0_27 "

  • itext-2.0.8.jar

  • de.huxhorn.lilith.3rdparty.flyingsaucer.core-renderer-8Pre2.jar

Я также экспериментировал с гораздо большим количеством шрифтов, но я думаю, что моя проблема не имеет ничего общего с использованием неправильных шрифтов.Любая помощь более чем приветствуется.

Thanx

10
задан informatik01 28 April 2014 в 10:30
поделиться