Как предотвратить разрывы строк при экспорте HTML-отчетов jasper при использовании усечения текстового поля? - PullRequest
1 голос
/ 03 февраля 2012

Используя iReport 4.5.0, я устанавливаю эти два свойства и значения:

  • net.sf.jasperreports.text.truncate.at.char=true
  • net.sf.jasperreports.text.truncate.suffix=...

Намерение состоит в добавлении «...» в конец текстовых полей всякий раз, когда они должны быть усечены, и что определение усечения происходит на уровне символов, а не на уровне слов.Это работает, как и ожидалось при экспорте в PDF.Однако при экспорте в HTML последний усеченный токен (с добавленным суффиксом) часто, хотя и не всегда, переносится некорректно.(Он делает это, даже если для параметра StretchType установлено значение «Без растяжения».) Пример:

Jasper HTML Export Error

Если я изменю net.sf.jasperreports.text.truncate.at.char=false (чтобы разбить слова вместо символов), кажется,работать чаще, но только потому, что разрывы слов обычно оставляют больше места для суффикса.Неожиданная перенос строки по-прежнему происходит с разрывом слов, особенно если я увеличиваю длину данного суффикса.

Мое лучшее предположение состоит в том, что измерение экспортера HTML не точно рассчитывает ширину, требуемую данным суффиксом (еслион вообще его вычисляет).

  1. Кто-нибудь может подтвердить?
  2. Есть какие-нибудь предложения относительно обходного пути?

Похоже, с параметром StretchType, установленным на No Stretch, экспортер HTML должен также установить пробел: nowrap.Однако, хотя это предотвратит перенос строки, конец суффикса будет частично скрыт (из-за переполнения: скрытый стиль).

1 Ответ

1 голос
/ 03 февраля 2012

"Мое лучшее предположение - то, что измерение экспортера HTML не точно вычисляет ширину, требуемую данным суффиксом (если это вообще вычисляет)."

  1. Я подтверждаю, что это, безусловно, причина.

Но на самом деле не существует простого обходного пути. Ваш PDF-файл хорош, поэтому вы делаете что-то правильно. Ну ... ты много делаешь правильно. ; -)

В HTML вы не знаете - очень фундаментально - точные детали шрифта, который будет отображать текст. Вы, конечно, можете указать шрифт. Но клиентская машина может не иметь его. Или это может быть тот же ... но не совсем то же самое. Или клиент может использовать другой шрифт или другой размер с помощью различных механизмов переопределения на стороне клиента.

Если вы используете разные шрифты, вы должны заметить немного отличающиеся результаты. Вы можете найти тот, который работает лучше чаще. (Очевидно, что это не на 100% идеально.)

Если вы не используете Font Extensions, тогда вам следует. Если вы используете Font Extensions, то вы можете указать список шрифтов в порядке убывания, который следует использовать в HTML. Это должно дать вам достаточно контроля, чтобы получить хорошее поведение в большом количестве случаев. Зачастую вы можете сделать его идеальным во всех случаях, которые вас волнуют.

...