Stili esterni in JasperReports
-
10-07-2019 - |
Domanda
Sto lavorando su un sistema che include un gran numero di report, generati utilizzando JasperReports.Una delle funzionalità più recenti è la possibilità di definire stili per i report.
Dai documenti disponibili credo che ci sia un modo per avere un file esterno che definisce gli stili da utilizzare e puoi farne riferimento nei tuoi rapporti Jasper.Ciò consente l'utilizzo di un singolo stile da più report.
Non riesco a trovare alcuna informazione concreta sul fatto che questa sia una funzionalità effettiva e, in caso affermativo, come utilizzarla.Qualcuno sa se è possibile avere stili esterni per i report Jasper e, in tal caso, come farlo?
Soluzione
Usa modelli JasperReport . Un modello JasperReports termina in .jrtx
e può essere simile a questo (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>
e quindi nel tuo .jrxml
file, includilo come modello:
...
<template>"styles.jrtx"</template>
...
Anche iReport lo capisce, quindi i tuoi stili vengono importati e mostrati correttamente in iReport (anche se a volte ho notato che non li avrebbe prelevati e che sarebbe stato necessario ricaricarli o ricompilarli).
Altri suggerimenti
Puoi anche evitare di specificare il nome del file effettivo nell'elemento <template>
utilizzando un parametro passato nel tuo report in fase di esecuzione
<parameter name="TEMPLATE_FILE" isForPrompting="false" class="java.lang.String"/>
<template><![CDATA[$P{TEMPLATE_FILE}]]></template>
dove $ P {TEMPLATE_FILE} è il percorso completo della risorsa di stile
Mi piace condividere ciò che ho imparato sull'uso degli stili nei report Jasper, cosa che ritengo molto utile per i progettisti di report come me, da un libro intitolato JasperReport Development cookbook di Bilal Siddiqui.Mi piace questo libro e ho trovato esempi di stili in vari modi, come:
Creare uno stile riutilizzabile
Seleziona semplicemente "Stile" durante la creazione di un nuovo report e definisci lo stile per testo, linea e rettangoli.Il file di stile verrà archiviato come file .jrtx.Importa lo stile riutilizzabile nel tuo report
Sono presenti tre blocchi di informazioni durante l'importazione degli stili nel report.Passo 1.Nome e posizione del modello di stile
<template><![CDATA["C:\\ BigBoldRedTemplate.jrtx"]]></template>
Passo 2.Ogni volta che applichi uno stile agli elementi del report utilizzando il modello di stile, a <reportElement>
il tag viene creato come mostrato di seguito:
//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>
- Combinazione degli stili interni e riutilizzabili nel report
- Usa la potenza dell'HTML per dare stile al tuo report
Ad esempio, il campo di testo ha la seguente espressione che include tag HTML (ad es.<li>
) e desideri che i tag HTML funzionino nella progettazione del tuo report:
"<li>"+"Invoice # "+$F{InvoiceID}+", "+
$ F {CustomerName}+"Acquistato"+$ f {ProductName}+"in"+$ f {InvoicePeriod}+"(Valore delle fatture:\$ "+$F{ValoreFattura}+")"+"
La soluzione è semplice, basta impostare la proprietà "Markup" del campo di testo su "Stile" e basta.
Ho ottenuto il permesso dall'autore di copiare una parte di codice dal suo libro di cucina JasperReports in questo post.