FOP apache - поддержка букв иврита

В последние несколько дней я исследовал поддержку букв иврита в проекте FOP apache для создания PDF-файла.

Я видел, что была проблема с этим в прошлом, и я действительно не понял, была ли она решена или нет?

Если есть поддержка, может ли кто-нибудь показать / перенаправить меня на простой образец, дающий мне файл XSL-FO с буквами иврита, что при использовании FOP PDF-файл создается правильно (четкий и не перевернутый буквами заказа).

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


person Anatoly Libman    schedule 15.09.2013    source источник


Ответы (1)


Какой образец вы ищете? У меня работает нормально...

 <fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block>Hebrew</fo:block></fo:list-     item-label>
 <fo:list-item-body start-indent="body-start()"><fo:block xml:lang="he"><fo:bidi-override    
 unicode-bidi="embed" direction="rtl">כאשר העולם רוצה לדבר, הוא מדבר ב־Unicode</fo:bidi-
 override></fo:block></fo:list-item-body></fo:list-item>

Если вы используете переопределение биди и направление, все работает нормально. Я тестировал это в RenderX, Antennahouse и Apache FOP, и результаты были такими же.

Верхнее изображение — это Antennahouse, среднее RenderX и нижнее Apache FOP.

Согласно вашему вопросу ниже, использование направления rtl и bidi-override связано с тем, что предложение содержит смешанный английский и иврит. Если у вас был только иврит, он должен правильно форматироваться. Посмотрите на это изображение с FOP всеми тремя способами. Средняя версия неверна, поскольку требует этих атрибутов.

Вот полный пример для этого:

    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
    <fo:simple-page-master master-name="PageMaster" margin="25mm" page-width="8.5in" page-height="11in" >
    <fo:region-body margin="10mm"/>
    <fo:region-before extent="6mm" display-align="center"/>
    <fo:region-after extent="6mm" display-align="center"/>
    </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="PageMaster">
    <fo:flow flow-name="xsl-region-body" line-height="1.7" font-family="Arial Unicode MS">
    <fo:block>Mixed English and Hebrew with Override</fo:block>
    <fo:block xml:lang="he"><fo:bidi-override unicode-bidi="embed" direction="rtl">כאשר העולם רוצה לדבר, הוא מדבר ב־Unicode</fo:bidi-override></fo:block>
    <fo:block>Mixed English and Hebrew no Override</fo:block>
    <fo:block>כאשר העולם רוצה לדבר, הוא מדבר ב־Unicode</fo:block>
    <fo:block>Hebrew only no Override</fo:block>
    <fo:block>כאשר העולם רוצה לדבר, הוא מדבר ב־</fo:block>    
    </fo:flow>
    </fo:page-sequence>
    </fo:root>

FOP, демонстрирующий различные способы рендеринга

Все три основных средства визуализации FO

person Kevin Brown    schedule 16.09.2013
comment
версию ведьмы FOP вы используете? - person Anatoly Libman; 16.09.2013
comment
в моем случае параметр данных неизвестен, он может быть на английском/иврите. как мне поступить в этом случае? - person Anatoly Libman; 16.09.2013
comment
Мне не удалось заставить его работать, можете ли вы предоставить мне полный файл? - person Anatoly Libman; 16.09.2013
comment
Я добавил полный образец с выходными данными и примечаниями, см. ответ. - person Kevin Brown; 16.09.2013
comment
И обратите внимание, реальным ответом является использование fo:bidi-override, как это сделано в исходном примере. Причина в том, ЕСЛИ предложение имеет смешанное содержание, или полностью на английском, или на иврите, ответ будет правильным. - person Kevin Brown; 16.09.2013