Caratteri report

Un report contiene elementi di testo e ognuno di questi può avere le proprie impostazioni di carattere. Queste impostazioni possono essere specificate utilizzando <font> disponibile nel tag <textElement>. Un report può definire una serie di caratteri. Una volta definiti, possono essere utilizzati come impostazioni dei caratteri predefiniti o di base per altre definizioni di caratteri nell'intero report.

Caratteri report

Un carattere di report è una raccolta di impostazioni di carattere, dichiarate a livello di report. Un carattere di report può essere riutilizzato in tutto il modello di report quando si impostano le proprietà del carattere degli elementi di testo.

I caratteri del rapporto sono ora deprecati. Non utilizzare gli elementi <reportFont /> dichiarati all'interno del documento stesso. Utilizza invece l'elemento <style />.

Attributi dei caratteri

La tabella seguente riassume i principali attributi del <font> elemento -

S.NO Attributo e descrizione
1

fontName

Il nome del carattere, che può essere il nome di un carattere fisico, logico o il nome di una famiglia di caratteri dalle estensioni dei caratteri JasperReports registrate.

2

size

La dimensione del carattere misurata in punti. Il valore predefinito è 10.

3

isBold

Il flag che specifica se è richiesto un carattere in grassetto. Il valore predefinito è false.

4

isItalic

Il flag che specifica se è richiesto un carattere corsivo. Il valore predefinito è false.

5

isUnderline

Il flag che specifica se è richiesta la decorazione del testo sottolineato. Il valore predefinito è false.

6

isStrikeThrough

Il flag che specifica se è richiesta la decorazione del testo barrato. Il valore predefinito è false.

7

pdfFontName

Il nome di un font PDF equivalente richiesto dalla libreria iText durante l'esportazione di documenti in formato PDF.

8

pdfEncoding

La codifica dei caratteri PDF equivalente, richiesta anche dalla libreria iText.

9

isPdfEmbedded

Il flag che specifica se il carattere deve essere incorporato nel documento stesso. Il valore predefinito è false. Se impostato su true, aiuta a visualizzare il documento PDF senza problemi.

Tipi di carattere

In JasperReports i caratteri possono essere classificati come -

  • Logical Fonts- Cinque tipi di font, che sono stati riconosciuti dalla piattaforma Java dalla versione 1.0, sono chiamati font logici. Questi sono -Serif, SansSerif, Monospaced, Dialog, and DialogInput. Questi caratteri logici non sono librerie di caratteri effettive installate in qualsiasi punto del sistema. Sono semplicemente nomi di tipi di carattere riconosciuti dal runtime Java. Questi devono essere mappati a un font fisico installato nel sistema.

  • Physical Fonts- Questi caratteri sono le librerie di caratteri effettive costituite, ad esempio, da caratteri TrueType o PostScript Type 1. I caratteri fisici possono essere Arial, Time, Helvetica, Courier o un numero qualsiasi di altri caratteri, inclusi i caratteri internazionali.

  • Font Extensions- La libreria JasperReports può utilizzare i caratteri registrati al volo in fase di esecuzione, tramite il supporto integrato per le estensioni dei caratteri. Un elenco di famiglie di caratteri può essere reso disponibile a JasperReports utilizzando l'estensione dei caratteri. Questi sono fatti di caratteri dall'aspetto simile e supportano localizzazioni specifiche.

Come descritto nella tabella sopra, dobbiamo specificare nell'attributo fontName il nome di un font fisico, il nome di un font logico o il nome di una famiglia di font dalle estensioni dei font JasperReports registrate.

Nome carattere PDF

La libreria JasperReports utilizza la libreria iText, quando esporta i report in PDF (Portable Document Format). I file PDF possono essere visualizzati su varie piattaforme e avranno sempre lo stesso aspetto. Ciò è in parte dovuto al fatto che in questo formato esiste un modo speciale di trattare i caratteri. L' attributo fontName non serve quando si esporta in PDF. L'attributo pdfFontName esiste in cui è necessario specificare le impostazioni del carattere.

La libreria iText sa come gestire i caratteri incorporati e i file TTF e riconosce i seguenti nomi di caratteri incorporati:

  • Courier
  • Courier-Bold
  • Courier-BoldOblique
  • Courier-Oblique
  • Helvetica
  • Helvetica-Bold
  • Helvetica-BoldOblique
  • Helvetica-Oblique
  • Symbol
  • Times-Roman
  • Times-Bold
  • Times-BoldItalic
  • Times-Italic
  • ZapfDingbats

Secondo il prerequisito della libreria iText, per lavorare con i caratteri, dobbiamo specificare uno dei seguenti come nome del carattere:

  • Un nome di carattere incorporato dall'elenco sopra.

  • Il nome di un file TTF (True Type Font), che può individuare su disco.

  • Il vero nome del font, a condizione che il file TTF contenente il font sia stato precedentemente registrato con iText o che sia stato definito un alias al momento della registrazione del font.

In base ai prerequisiti precedenti, l' attributo pdfFontName può contenere uno dei seguenti valori:

  • Il nome di un font PDF incorporato dall'elenco precedente.

  • Il nome di un file TTF che può essere posizionato su disco in fase di esecuzione durante l'esportazione in PDF.

  • Il vero nome di un font registrato.

  • Il suffisso della chiave (la parte dopo net.sf.jasperreports.export.pdf.font ) per un font registrato con iText come file di font.

Caratteri predefiniti ed ereditarietà

Ogni elemento di testo eredita gli attributi di carattere e stile dal suo elemento padre, che a sua volta eredita questi attributi dal suo padre. Se non sono definiti stili e / o caratteri per gli elementi, verrà applicato lo stile predefinito (e / o il carattere - ma ora è deprecato) dichiarato nell'elemento radice <jasperReport />.

La definizione di stili o caratteri predefiniti in JasperReports non è obbligatoria. Se nessun carattere è definito per un dato elemento, il motore cerca gli attributi dei caratteri ereditati oppure, se non vengono trovati attributi in questo modo, cerca la proprietà net.sf.jasperreports.default.font.name nella / src / default.jasperreports.properties file. Il suo valore definisce il nome della famiglia di caratteri da utilizzare quando le proprietà del carattere non sono definite esplicitamente per un elemento di testo o ereditate dal suo genitore.

Le proprietà dei caratteri predefinite principali ei relativi valori definiti nel file /src/default.jasperreports.properties sono nella tabella seguente:

Proprietà Descrizione
net.sf.jasperreports.default.font.name = SansSerif Il nome del carattere predefinito.
net.sf.jasperreports.default.font.size = 10 La dimensione del carattere predefinita.
net.sf.jasperreports.default.pdf.font.name = Helvetica Il carattere PDF predefinito.
net.sf.jasperreports.default.pdf.encoding = Cp1252 La codifica dei caratteri PDF predefinita.
net.sf.jasperreports.default.pdf.embedded = false Per impostazione predefinita, i caratteri PDF non sono incorporati.

Esempio

Per dimostrare l'utilizzo dei caratteri e degli attributi dei caratteri per ottenere un aspetto del testo particolare, scriviamo un nuovo modello di rapporto (jasper_report_template.jrxml). I contenuti di JRXML sono i seguenti. Salvalo nella directory C: \ tools \ jasperreports-5.0.1 \ test. Qui, visualizzeremo un testo nel titolo del report in vari formati di carattere.

<?xml version = "1.0" encoding = "UTF-8"?>

<jasperReport xmlns = "http://jasperreports.sourceforge.net/jasperreports"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://jasperreports.sourceforge.net/jasperreports
   http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
   name = "jasper_report_template" pageWidth = "595" pageHeight = "842"
   columnWidth = "555" leftMargin = "20" rightMargin = "20" topMargin = "30"
   bottomMargin = "30">

   <title>
      <band height = "682">
      
      <staticText>
         <reportElement x = "0" y = "50" width = "150" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[Welcome to TutorialsPoint!]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "50" width = "390" height = "40"/>
         <textElement/>
         
         <text>
           <![CDATA[<staticText>
           <reportElement x = "0" y = "50" width = "150" height = "40"/>
           <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "0" y = "100" width = "150" height = "40"/>
         
         <textElement>
            <font size = "12"/>
         </textElement>
         
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "100" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "100" width = "150" height = "40"/>
            
            <textElement>
               <font size = "14"/>
            </textElement>
				
            <text> Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "0" y = "150" width = "150" height = "40"/>
         
         <textElement>
            <font fontName = "DejaVu Serif" size = "12" isBold = "false"/>
         </textElement>
			
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "150" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "250" width = "150" height = "40"/>
            
            <textElement>
               <font fontName = "DejaVu Serif" size = "12" isBold = "false"/>
            </textElement>
				
            <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "0" y = "200" width = "150" height = "40"/>
         
         <textElement>
            <font fontName = "DejaVu Serif" size = "12" isBold = "true"/>
         </textElement>
			
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "200" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "300" width = "150" height = "40"/>
            
            <textElement>
               <font fontName = "DejaVu Serif" size = "12" isBold = "true"/>
            </textElement>
				
            <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "0" y = "250" width = "150" height = "40"/>
         
         <textElement>
            <font fontName = "Monospaced" size = "12" isItalic = "true" 
               isUnderline = "true" pdfFontName = "Courier-Oblique"/>
         </textElement>
         
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "250" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "350" width = "150" height = "40"/>
            
            <textElement>
               <font fontName = "Monospaced" size = "12" isItalic = "true"
                  isUnderline = "true" pdfFontName = "Courier-Oblique"/>
            </textElement>
            
            <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "0" y = "300" width = "150" height = "40"/>
         
         <textElement>
            <font fontName = "Monospaced" size = "12" isBold = "true"
               isStrikeThrough = "true" pdfFontName = "Courier-Bold"/>
         </textElement>
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "300" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "400" width = "150" height = "40"/>
            
            <textElement>
               <font fontName = "Monospaced" size = "12" isBold = "true"
                  isStrikeThrough = "true" pdfFontName = "Courier-Bold"/>
            </textElement>
				
            <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "0" y = "350" width = "150" height = "40" 
            forecolor = "#FF0000"/>
         
         <textElement>
            <font size = "14"/>
         </textElement>
			
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "350" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "450" width = "150" height = "40"
               forecolor = "red"/>
            
            <textElement><font size = "14"/></textElement>
            <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "0" y = "400" width = "150" height = "40" mode = "Opaque"
            forecolor = "#00FF00" backcolor = "#FFFF00"/>
         
         <textElement>
            <font fontName = "Serif" size = "12" isBold = "true" 
               pdfFontName = "Times-Bold"/>
         </textElement>
			
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "400" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "500" width = "150" height = "40"
               forecolor = "green" backcolor = "#FFFF00" mode = "Opaque"/>
            
            <textElement>
               <font fontName = "Serif" size = "12" isBold = "true"
                  pdfFontName = "Times-Bold"/>
            </textElement>
				
            <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement x = "0" y = "450" width = "150" height = "40" mode = "Opaque"
            forecolor = "#0000FF" backcolor = "#FFDD99"/>
         
         <textElement textAlignment = "Center" verticalAlignment = "Middle">
            <font fontName = "SansSerif" size = "12" isBold = "false"
            isItalic = "true" pdfFontName = "Sans.Slanted" isPdfEmbedded = "true"/>
         </textElement>
			
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "450" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "550" width = "150" height = "90"
               forecolor = "blue" backcolor = "#FFDD99" mode = "Opaque"/>
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font fontName = "SansSerif" size = "12" isBold = "false"
                  pdfFontName = "Sans.Slanted" isPdfEmbedded = "true"/>
            </textElement>
				
            <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      </staticText>
      
      <staticText>
         <reportElement mode = "Opaque" x = "0" y = "500" width = "150" height = "40"
            forecolor = "#FF0000" backcolor = "#99DDFF"/>
         
         <textElement textAlignment = "Right" verticalAlignment = "Bottom">
            <font fontName = "SansSerif" size = "12" isBold = "true"
               pdfFontName = "DejaVu Sans Bold" isPdfEmbedded = "true"/>
         </textElement>
			
         <text><![CDATA[Welcome to TutorialsPoint!]]></text>
      </staticText>
      
      <staticText>
         <reportElement x = "160" y = "500" width = "390" height = "40"/>
         <textElement/>
         
         <text>
            <![CDATA[<staticText>
            <reportElement x = "0" y = "650" width = "150" height = "90"    forecolor = "red"
               backcolor = "#99DDFF" mode = "Opaque"/>
            
            <textElement textAlignment = "Right" verticalAlignment = "Bottom">
               <font fontName = "SansSerif" size = "12" isBold = "true"
                  pdfFontName = "DejaVu Sans Bold" isPdfEmbedded = "true"/>
            </textElement>
				
            <text>Welcome to TutorialsPoint!</text></staticText>]]>
         </text>
      
      </staticText>
   
   </band>
</title>

</jasperReport>

Il codice java per compilare e generare il report è il seguente. Salviamo questo fileJasperFontsReportFill.java nella directory C: \ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint.

package com.tutorialspoint;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;

public class JasperFontsReportFill {
   public static void main(String[] args) {
      String sourceFileName = "C://tools/jasperreports-5.0.1/test/" + 
         "jasper_report_template.jasper";

      try {
         JasperFillManager.fillReportToFile(sourceFileName, null,
            new JREmptyDataSource());
      } catch (JRException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }

   }
}

Qui, utilizziamo un'istanza di JREmptyDataSource durante la compilazione dei report per simulare un'origine dati con un record al suo interno, ma con tutti i campi nulli .

Generazione di report

Compileremo ed eseguiremo il file sopra utilizzando il nostro normale processo di compilazione ANT. I contenuti del file build.xml (salvato nella directory C: \ tools \ jasperreports-5.0.1 \ test) sono i seguenti.

Il file di importazione - baseBuild.xml viene prelevato dal capitolo Configurazione dell'ambiente e dovrebbe essere posizionato nella stessa directory di build.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewFillReport" basedir = ".">
   <import file = "baseBuild.xml" />
   
   <target name = "viewFillReport" depends = "compile,compilereportdesing,run"
      description = "Launches the report viewer to preview the report 
      stored in the .JRprint file.">
      
      <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true">
         <arg value = "-F${file.name}.JRprint" />
         <classpath refid = "classpath" />
      </java>
		
   </target>
   
   <target name = "compilereportdesing" description = "Compiles the JXML file and
      produces the .jasper file.">
      
      <taskdef name = "jrc" classname = "net.sf.jasperreports.ant.JRAntCompileTask">
         <classpath refid = "classpath" />
      </taskdef>
      
      <jrc destdir = ".">
         <src>
            <fileset dir = ".">
               <include name = "*.jrxml" />
            </fileset>
         </src>
         <classpath refid = "classpath" />
      </jrc>
   
   </target>
	
</project>

Quindi, apriamo la finestra della riga di comando e andiamo alla directory in cui si trova build.xml. Infine, esegui il comandoant -Dmain-class=com.tutorialspoint.JasperFontsReportFill (viewFullReport è il target predefinito) come -

C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.tutorialspoint.JasperFontsReportFill
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml

clean-sample:
   [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint

compile:
   [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
   [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28:
   warning: 'includeantruntime' was not set, defaulting to build.
   [javac] Compiling 5 source files to C:\tools\jasperreports-5.0.1\test\classes

compilereportdesing:
   [jrc] Compiling 1 report design files.
   [jrc] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
   [jrc] log4j:WARN Please initialize the log4j system properly.
   [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
   [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.

run:
   [echo] Runnin class : com.tutorialspoint.JasperFontsReportFill
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

viewFillReport:
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

BUILD SUCCESSFUL
Total time: 45 minutes 3 seconds

Come risultato della compilazione di cui sopra, si apre una finestra di JasperViewer come mostrato nella schermata sotto riportata -

Qui possiamo vedere che il testo "Benvenuto in TutorialsPoint" viene visualizzato in diversi formati di carattere.