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

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