Как визуализировать азиатские символы в PDF с помощью xhtmlrenderer

Мне было интересно, какие шаги необходимы для рендеринга азиатских символов с использованием библиотеки xhtmlrenderer (летающая тарелка) на основе Java?

Я хочу сделать следующее:

<html>
    <body>同名の映画のモデ</body>
</html>

Без каких-либо настроек шрифта, добавленных в HTML, он отлично отображается в обычных браузерах, но я все равно не могу найти, чтобы отобразить это в PDF, используя часть iTextRenderer xhtmlrenderer.

После просмотра различных тем в списке рассылки я вижу множество сообщений, в которых говорится о добавлении файлов .TTF из каталога c:\windows\fonts, и я изменил примеры для работы в Linux ( https://gist.github.com/643173745182c9becc57 ), в котором показаны различные отображаемые шрифты, но я не вижу никаких азиатских глифов.

Есть ли у кого-нибудь достойные указатели или чистые решения этой проблемы? Или я ищу не ту проблему с действительно простым решением в другом месте?


person Mark Derricutt    schedule 08.11.2009    source источник
comment
Я никогда не использовал Flying Saucer, поэтому я не отвечаю в качестве ответа, но обычно такие вещи включают добавление шрифтов в средство визуализации. Браузеры обычно достаточно умны, чтобы обнаружить это, но большинство этих библиотек не утруждают себя поиском подходящего шрифта. (BIRT, например, в этом ужасен).   -  person Malaxeur    schedule 09.11.2009
comment
Спасибо - я тоже это обнаружил, с тех пор нашел еще больше примеров кода летающей тарелки, показывающего компонент браузера, отображающий глифы на экране, но который по-прежнему не отображается в PDF с использованием iText.   -  person Mark Derricutt    schedule 09.11.2009


Ответы (2)


Вы также можете добавить информацию о стиле шрифта в css.

@font-face {
    font-family: 'your_font_face_name';
    src: url('your_font.ttf');

    -fs-pdf-font-embed: embed;
    -fs-pdf-font-encoding: Identity-H;
        }
person John    schedule 04.04.2013

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

Попробуйте также встроить шрифт, например.

renderer.getFontResolver().addFont("your_font_file.ttf", BaseFont.EMBEDDED);

По этой ссылке есть несколько файлов шрифтов.

person anger    schedule 09.11.2009