Внешние стили в JasperReports
Я работаю над системой, которая включает большое количество отчетов, созданных с помощью JasperReports. Одна из новых функций заключается в том, что вы можете определять стили для отчетов.
Из доступных документов я считаю, что есть способ использовать внешний файл, определяющий используемые стили, и вы можете ссылаться на него в отчетах о яшме. Это позволяет использовать один стиль для нескольких отчетов.
Я не могу найти никакой конкретной информации о том, является ли это фактической функцией, и если да, то как ее использовать. Кто-нибудь знает, возможно ли иметь внешние стили для отчетов jasper, и если да, то как это сделать?
Ответы
Ответ 1
Используйте Шаблоны JasperReport. Шаблон JasperReports - это тот, который заканчивается на .jrtx
, и может выглядеть примерно так (styles.jrtx
):
<?xml version="1.0"?>
<!DOCTYPE jasperTemplate
PUBLIC "-//JasperReports//DTD Template//EN"
"http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd">
<jasperTemplate>
<style name="Report Title" isDefault="false" hAlign="Center" fontSize="24" isBold="true"/>
<style name="Heading 1" isDefault="false" fontSize="18" isBold="true"/>
<style name="Heading 2" isDefault="false" fontSize="14" isBold="true"/>
</jasperTemplate>
а затем в вашем файле .jrxml
включите его в качестве шаблона:
...
<template>"styles.jrtx"</template>
...
iReport также понимает это, поэтому ваши стили импортируются и отображаются в iReport правильно (хотя я заметил, что иногда он не подбирал их для перезагрузки или перекомпиляции).
Ответ 2
Вы также можете избежать указания фактического имени файла в элементе <template>
с помощью параметра, переданного в ваш отчет во время выполнения
<parameter name="TEMPLATE_FILE" isForPrompting="false" class="java.lang.String"/>
<template><![CDATA[$P{TEMPLATE_FILE}]]></template>
где $P {TEMPLATE_FILE} - полный путь к ресурсу стиля
Ответ 3
Мне нравится делиться своим опытом использования стилей в отчетах Jasper, которые, как мне кажется, очень полезны для таких дизайнеров отчетов, как я, из книги поваренной книги JasperReport Development от Bilal Siddiqui. Мне нравится эта книга и я нашел демонстрацию стилей различными способами:
-
Создание стиля многократного использования
Просто выберите "Стиль" при создании нового отчета и определите стиль для текста, строки и прямоугольников. Файл стиля будет сохранен как .jrtx файл.
-
Импортируйте повторно используемый стиль в свой отчет
При импорте стилей в вашем отчете есть три части информации.
Шаг 1. Название и расположение шаблона стиля
<template><![CDATA["C:\\ BigBoldRedTemplate.jrtx"]]></template>
Step2. Каждый раз, когда вы применяете стиль к вашим элементам отчета с использованием шаблона стиля, создается тэг <reportElement>
, как показано ниже:
//style applied to a rectangle
<rectangle radius="10">
<reportElement style="BigBoldRed" mode="Transparent" x="0" y="0" width="555" height="44"/>
</rectangle>
//style applied to a the text field
<staticText>
<reportElement style="BigBoldRed" x="0" y="0" width="555" height="66"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Monthly Customer Invoices]]></text>
</staticText>
- Смешивание внутренних и многоразовых стилей в отчете
- Использование мощности HTML для создания отчета
Например, ваше текстовое поле имеет следующее выражение, которое включает теги HTML (т.е. <li>
), и вы хотите, чтобы теги HTML работали в вашем проекте отчета:
"<li>"+"Invoice # "+$F{InvoiceID}+", "+
$F {CustomerName} + "куплено" + $F {ProductName} + "в" + $F {InvoicePeriod} + "(значение счета: \ $" + $F {InvoiceValue} + ")" +"
Решение прост, просто установите свойство "Разметка" текстового поля на "Стили" и что оно.
Я получил разрешение автора на копирование фрагмента кода из его кулинарной книги JasperReports в этом сообщении.