Предупреждение FOP: строка 1 абзаца выходит за пределы доступной области более чем на 50 пунктов

Просто чтобы убедиться, что я хотел бы поделиться с вами своим пониманием FOP vre 1.0, FOP использует алгоритм автоматического разрыва строки, т.е. когда данные выходят за пределы ширины ячейки таблицы, FOP ищет пробелы в данных, и если он находит белый пространство, затем он переносит данные, которые выходят за пределы ближайшего пробела, в следующую строку этой ячейки.

Но что, если в данных нет пробела, тогда FOP не может обернуть данные. Это проблема, с которой я сталкиваюсь.

Я пишу этот код.

<fo:table-cell border="solid">
<fo:block hyphenate="true" language="en" wrap-option="wrap">
<xsl:value-of select="welcomeMsg"></xsl:value-of>
</fo:block>
</fo:table-cell>

но он переполняется из ячейки таблицы вместо переноса, потому что welcomeMsg представляет собой длинную строку без пробелов между ними. Мне нужно, чтобы welcomeMsg был обернут внутри ячейки таблицы.


person krishna singh    schedule 29.09.2011    source источник
comment
Можете ли вы привести пример welcomeMsg? Кроме того, есть ли у вас какие-либо правила хранения выше в таблице, которые могут нарушать ваши переносы?   -  person Daniel Haley    schedule 29.09.2011
comment
Кроме того, вы используете XSLT 2.0?   -  person Daniel Haley    schedule 29.09.2011
comment
Если вы хотите разбить длинную строку, хотите ли вы расставить переносы, когда она разорвана, или просто разбить строку? Существуют ли какие-либо шаблоны для строки, где предпочтительны разрывы?   -  person Mads Hansen    schedule 29.09.2011


Ответы (1)


Apache FOP реализует алгоритм Unicode UAX #14 для разрыва строки. Итак, если слово (или длинное число) не может быть разбито и, следовательно, переполняет ячейку таблицы, это из-за этого алгоритма. Обычный обходной путь — вставить пробелы нулевой ширины (&#x200B;) в поля, которые, как вы знаете, могут вызвать переполнение. Это легко сделать с помощью XSLT. См. также: XSL-FO: Force Wrap on Table Entries

person Jeremias Märki    schedule 30.09.2011