Внешние стили в 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 в этом сообщении.