Внешние стили в JasperReports
Я работаю над системой, которая включает в себя большое количество отчетов, сгенерированных с помощью JasperReports. Одна из новых функций заключается в том, что вы можете определять стили для отчетов.
Из доступных документов я полагаю, что есть какой-то способ иметь внешний файл, определяющий стили для использования, и вы можете сослаться на это в своих отчетах о яшме. Это позволяет использовать один стиль несколькими отчетами.
Я не могу найти какую-либо конкретную информацию о том, является ли это реальной функцией, и если это так, как ее использовать. Кто-нибудь знает, возможно ли иметь внешние стили для отчетов яшмы, и если да, то как это сделать?
3 ответа
Используйте шаблоны 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 (хотя я заметил, что иногда они не подберут их, и потребуется перезагрузка или перекомпиляция).
Вы также можете избежать указания фактического имени файла в <template>
элемент с помощью параметра, переданного в ваш отчет во время выполнения
<parameter name="TEMPLATE_FILE" isForPrompting="false" class="java.lang.String"/>
<template><![CDATA[$P{TEMPLATE_FILE}]]></template>
где $P{TEMPLATE_FILE} - полный путь к ресурсу стиля
Мне нравится делиться своими знаниями об использовании стилей в отчетах Jasper, которые я считаю весьма полезными для дизайнеров отчетов, таких как я, из книги под названием "Поваренная книга по разработке JasperReport Development by Bilal Siddiqui". Мне нравится эта книга, и я нахожу демонстрацию стилей различными способами, такими как:
Создание многоразового стиля
Просто выберите "Стиль" при создании нового отчета и определите стиль для текста, линий и прямоугольников. Файл стиля будет сохранен как файл.jrtx.Импортируйте повторно используемый стиль в ваш отчет
Существует три порции информации при импорте стилей в ваш отчет. Шаг 1. Наименование и расположение шаблона стиля
<template><![CDATA["C:\\ BigBoldRedTemplate.jrtx"]]></template>
Шаг 2. Каждый раз, когда вы применяете стиль к элементам отчета, используя шаблон стиля, <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}+" in "+$F{InvoicePeriod}+" (значение счета: \$ "+$F{InvoiceValue}+")"+"
Решение простое, просто установите для свойства "Markup" текстового поля значение "Styled" и все.
Я получил разрешение от автора скопировать фрагмент кода из его кулинарной книги JasperReports в этом посте.