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

Программисты JAVA общаются здесь
Ответить
Anonymous
 Генерация PDF из HTML с нелатинскими символами с помощью ITextRenderer не работает

Сообщение Anonymous »

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

Я пытаюсь написать действительный 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
< /ul>

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

Спасибо

Подробнее здесь: https://stackoverflow.com/questions/102 ... rer-does-n
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»