Отступ в сгенерированном PDF с использованием JasperReports

У меня есть фрагмент HTML, хранящийся в базе данных как:

<ul>
<li>Pretend you're talking to a busy colleague and  have to sum up your   entire question in one sentence: what details can  you include that will help someone identify and solve your problem?</li>
<li>Spelling, grammar and punctuation are important!  Remember, this is the first part of your question others will see - you  want to make a good impression. If you're not comfortable writing in  English, ask a friend to proof-read it for you. </li>
<li>If you're having trouble summarizing the problem, write the title last - sometimes writing the rest of the question first can make it easier to describe the problem.&nbsp;</li>
</ul>

Я показываю этот фрагмент HTML в PDF-файле с помощью текстового поля JasperReports, приведенный выше HTML-код должен отображаться в сгенерированном PDF-файле.

  • Представьте, что вы разговариваете с занятым коллегой и должны сформулировать весь свой вопрос в одном предложении: какие детали вы можете включить, чтобы помочь кому-то определить и решить вашу проблему?
  • Орфография, грамматика и пунктуация важны! Помните, что это первая часть вашего вопроса, которую увидят другие — вы хотите произвести хорошее впечатление. Если вам неудобно писать на английском, попросите друга вычитать его для вас.
  • Если у вас возникли проблемы с обобщением проблемы, напишите заголовок последним — иногда написание оставшейся части вопроса первым может облегчить описание проблемы.

Но этот HTML отображается как:

введите здесь описание изображения

Фрагмент из файла jrxml:

<textField isStretchWithOverflow="true" isBlankWhenNull="true">
    <reportElement positionType="Float" x="7" y="47" width="501" height="15" isRemoveLineWhenBlank="true"  forecolor="#283234"/>
    <textElement markup="html">
        <font size="10"/>
    </textElement>
    <textFieldExpression><![CDATA[$F{description}]]></textFieldExpression>
</textField>

HTML передается в переменной description.

Любая идея, как я могу выровнять текст?


person Abs    schedule 24.10.2014    source источник
comment
Связанный Как добавить отступ в маркированный список   -  person Petter Friberg    schedule 10.11.2017


Ответы (1)


Мое решение показывает простой JRXML, который является желаемым результатом, независимым от инструментов, которые кто-то использует, например. iReport GUI, динамические отчеты или Java-код, создающий отчеты Jasper.

Сначала определите стиль, который исправляет отступ, сдвигая первую строку на несколько пикселей влево и сдвигая весь блок на ту же ширину вправо:

<style name="hanging-indentation-style">
    <box leftPadding="23"/>
    <paragraph firstLineIndent="-23"/>
</style>

Во-вторых, этот стиль применяется к reportElement из textField:

<textField isStretchWithOverflow="true" isBlankWhenNull="true">
    <reportElement style="hanging-indentation-style" positionType="Float" mode="Transparent" x="0" y="0" width="555" height="20" isRemoveLineWhenBlank="true"/>
    <textElement markup="html"/>
    <textFieldExpression class="java.lang.String"><![CDATA[$F{description}]]></textFieldExpression>
</textField>

В зависимости от размера шрифта вы можете изменять значения стиля в соответствии с вашими потребностями.

Я адаптировал ввод из Выравнивание маркеров в отчетах Jasper, где используется API динамических отчетов, и Висячий отступ в HTML-отчете Jasper Report, где он отображается через графический интерфейс, что было невозможно в моем случае с использованием iReport Designer 4.5.1, потому что нет возможности чтобы применить дополнение непосредственно к textField.

person timo.rieber    schedule 27.10.2014
comment
Если мы делаем что-то вручную, как вы предложили, это означает, что ul/li не имеет значения в jasperreports. - person Abs; 27.10.2014
comment
Отчеты Jasper могут интерпретировать фрагменты html вместе с другими типами разметки, и они анализируются на внутренняя структура. В результате используются стили по умолчанию. В вашем случае стиль списка по умолчанию не имеет висячего отступа и поэтому требует пользовательских стилей для достижения желаемого результата. - person timo.rieber; 27.10.2014