Отступ в сгенерированном 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 вводится в описание переменной.

Есть идеи как выровнять текст?

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,

Другие вопросы по тегам