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