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

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

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

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


person Jamie Love    schedule 13.10.2008    source источник


Ответы (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><![CDATA["styles.jrtx"]]></template>
...

iReport также понимает это, поэтому ваши стили импортируются и отображаются в iReport корректно (хотя я заметил, что иногда они не подхватывались, и требовалась перезагрузка или перекомпиляция).

person Jamie Love    schedule 15.10.2008
comment
Я тестирую это на много лет вперед и сегодня мне нужно добавить таким образом <template><![CDATA["styles.jrtx"]]></template>. И шаблон элемента должен быть сразу после property элементов. - person Topera; 15.10.2016

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

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

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

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

person Community    schedule 27.02.2009

Мне нравится делиться своими знаниями об использовании стилей в отчетах 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}+")"+"

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

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

person roshani    schedule 25.08.2010