Внешние стили в JasperReports - PullRequest
       26

Внешние стили в JasperReports

22 голосов
/ 13 октября 2008

Я работаю в системе, которая включает в себя большое количество отчетов, сгенерированных с использованием JasperReports . Одна из новых функций заключается в том, что вы можете определять стили для отчетов.

Из доступных документов я полагаю, что есть какой-то способ получить внешний файл, определяющий стили для использования, и вы можете сослаться на это в своих отчетах о яшме. Это позволяет использовать один стиль несколькими отчетами.

Я не могу найти какую-либо конкретную информацию о том, является ли это реальной функцией, и если это так, как ее использовать. Кто-нибудь знает, возможно ли иметь внешние стили для отчетов о яшме, и если да, то как это сделать?

Ответы [ 3 ]

28 голосов
/ 16 октября 2008

Использовать Шаблоны 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 (хотя я заметил, что иногда они не подберут их, потребуется перезагрузка или перекомпиляция).

9 голосов
/ 27 февраля 2009

Вы также можете избежать указания фактического имени файла в элементе <template>, используя параметр, переданный в отчет во время выполнения

<parameter name="TEMPLATE_FILE" isForPrompting="false" class="java.lang.String"/>

<template><![CDATA[$P{TEMPLATE_FILE}]]></template>

где $ P {TEMPLATE_FILE} - полный путь к ресурсу стиля

5 голосов
/ 25 августа 2010

Мне нравится делиться своими знаниями об использовании стилей в отчетах Jasper, которые я считаю весьма полезными для дизайнеров отчетов, таких как я, из книги под названием «Поваренная книга по разработке JasperReport» Билала Сиддики. Мне нравится эта книга, и я нахожу демонстрацию стилей различными способами, такими как:

  • Создание стиля многократного использования
    Просто выберите «Стиль» при создании нового отчета и определите стиль для текста, линий и прямоугольников. Файл стиля будет сохранен как файл .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} +" в "+ $ F {InvoicePeriod} +" (значение счета: \ $ "+ $ F {InvoiceValue} +") "+"

Решение простое, просто установите для свойства «Markup» текстового поля значение «Styled» и все.

Я получил разрешение автора на копирование фрагмента кода из его кулинарной книги JasperReports в этом посте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...