2016-05-11 5 views
0

Я использую Docbook-XSL и Apache FOP для создания PDF-документов, содержащих таблицы. С настройками по умолчанию таблицы имеют столбцы фиксированной ширины и строки, переносимые на границах слов. Но если слово длиннее ширины ячейки, оно переполняет ячейку. Я бы хотел разбить слова на нескольких строках в таком случае. Как это можно сделать?XSL-FO: упаковка длинных слов в ячейке таблицы

Перенос не является решением, так как слова не обязательно должны быть на английском языке. (Изменить: перенос на другие языки также не является решением. Не может быть заранее известно, на каком языке находятся данные, и могут быть слова, которые нельзя переносить, например, числовые строки.)

Я нашел предложения использовать keep-together.within-column="always" для fo:table-row s, но это не показало никакого эффекта.

(Edit :) Другое предложение заключалось в том, чтобы вставить пробелы нулевой ширины между всеми символами. Но это также прерывает короткие слова в середине слова. Мне понадобилось бы решение, которое по возможности прерывалось бы на границах слов, а среднее слово - только тогда, когда это необходимо.

ответ

1

FOP, как и каждый процессор FO, может переносить языки, отличные от английского. См. http://xmlgraphics.apache.org/fop/2.1/hyphenation.html

Вы можете попробовать использовать процессор FO, такой как Antenna House AH Formatter, который реализует макет таблицы «auto» и может регулировать ширину столбцов таблицы в зависимости от того, где текст может сломаться (а также переносить перенос для нескольких языков).

Другие ответы на слом текст в ячейках таблицы находятся:

+0

Я отредактировал мой вопрос выяснить, почему эти решения не являются идеальными для меня. – laurt

+0

См. Второе решение в http://stackoverflow.com/questions/4350788/xsl-fo-force-wrap-on-table-entries/33689540#33689540, которое вставляет '& # x200B;' после каждого тринадцатого непространственного персонаж. –

Смежные вопросы