Polices de rapport

Un rapport contient des éléments de texte et chacun d'eux peut avoir ses propres paramètres de police. Ces paramètres peuvent être spécifiés à l'aide de <font> balise disponible dans la balise <textElement>. Un rapport peut définir un certain nombre de polices. Une fois définis, ils peuvent être utilisés comme paramètres de police par défaut ou de base pour d'autres définitions de police dans tout le rapport.

Polices de rapport

Une police de rapport est un ensemble de paramètres de police, déclarés au niveau du rapport. Une police de rapport peut être réutilisée dans tout le modèle de rapport lors de la définition des propriétés de police des éléments de texte.

Les polices de rapport sont désormais obsolètes. N'utilisez pas les éléments <reportFont /> déclarés dans le document lui-même. Utilisez plutôt l'élément <style />.

Attributs de police

Le tableau ci-dessous résume les principaux attributs du <font> élément -

S.NON Attribut et description
1

fontName

Le nom de la police, qui peut être le nom d'une police physique, une police logique ou le nom d'une famille de polices à partir des extensions de police JasperReports enregistrées.

2

size

La taille de la police mesurée en points. La valeur par défaut est 10.

3

isBold

L'indicateur spécifiant si une police en gras est requise. La valeur par défaut est false.

4

isItalic

L'indicateur spécifiant si une police italique est requise. La valeur par défaut est false.

5

isUnderline

L'indicateur spécifiant si la décoration du texte souligné est requise. La valeur par défaut est false.

6

isStrikeThrough

L'indicateur spécifiant si la décoration de texte barré est requise. La valeur par défaut est false.

sept

pdfFontName

Le nom d'une police PDF équivalente requise par la bibliothèque iText lors de l'exportation de documents au format PDF.

8

pdfEncoding

L'encodage de caractères PDF équivalent, également requis par la bibliothèque iText.

9

isPdfEmbedded

L'indicateur qui spécifie si la police doit être incorporée dans le document lui-même. La valeur par défaut est false. S'il est défini sur true, permet d'afficher le document PDF sans aucun problème.

Types de polices

Dans JasperReports, les polices peuvent être classées comme suit:

  • Logical Fonts- Cinq types de polices, reconnus par la plate-forme Java depuis la version 1.0, sont appelés polices logiques. Ce sont -Serif, SansSerif, Monospaced, Dialog, and DialogInput. Ces polices logiques ne sont pas de véritables bibliothèques de polices installées n'importe où sur le système. Ce sont simplement des noms de types de polices reconnus par le runtime Java. Ceux-ci doivent être mappés à une police physique installée sur le système.

  • Physical Fonts- Ces polices sont les bibliothèques de polices réelles constituées, par exemple, de polices TrueType ou PostScript Type 1. Les polices physiques peuvent être Arial, Time, Helvetica, Courier ou n'importe quel nombre d'autres polices, y compris les polices internationales.

  • Font Extensions- La bibliothèque JasperReports peut utiliser des polices enregistrées à la volée au moment de l'exécution, grâce à sa prise en charge intégrée des extensions de polices. Une liste de familles de polices peut être mise à la disposition de JasperReports en utilisant l'extension de police. Ceux-ci sont constitués de polices de caractères similaires et prennent en charge des paramètres régionaux spécifiques.

Comme décrit dans le tableau ci-dessus, nous devons spécifier dans l'attribut fontName le nom d'une police physique, le nom d'une police logique ou le nom d'une famille de polices à partir des extensions de police JasperReports enregistrées.

Nom de la police PDF

La bibliothèque JasperReports utilise la bibliothèque iText, lors de l'exportation de rapports au format PDF (Portable Document Format). Les fichiers PDF peuvent être visualisés sur différentes plates-formes et auront toujours le même aspect. C'est en partie parce que dans ce format, il existe une manière spéciale de traiter les polices. L' attribut fontName n'est d'aucune utilité lors de l'exportation au format PDF. L'attribut pdfFontName existe là où nous devons spécifier les paramètres de police.

La bibliothèque iText sait comment gérer les polices intégrées et les fichiers TTF et reconnaît les noms de polices intégrés suivants -

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

Conformément aux prérequis de la bibliothèque iText, pour travailler avec des polices, nous devons spécifier l'un des éléments suivants comme nom de police -

  • Un nom de police intégré dans la liste ci-dessus.

  • Le nom d'un fichier TTF (True Type Font), qu'il peut localiser sur le disque.

  • Le vrai nom de la police, à condition que le fichier TTF contenant la police ait été préalablement enregistré avec iText ou qu'un alias ait été défini lors de l'enregistrement de la police.

Sur la base des pré-requis ci-dessus, l' attribut pdfFontName peut contenir l'une des valeurs suivantes -

  • Le nom d'une police PDF intégrée dans la liste ci-dessus.

  • Le nom d'un fichier TTF qui peut être localisé sur le disque au moment de l'exécution lors de l'exportation au format PDF.

  • Le vrai nom d'une police enregistrée.

  • Le suffixe de la clé (la partie après net.sf.jasperreports.export.pdf.font ) pour une police enregistrée avec iText en tant que fichier de police.

Polices par défaut et héritage

Chaque élément de texte hérite des attributs de police et de style de son élément parent, qui à son tour hérite de ces attributs de son parent. Si aucun style et / ou police n'est défini pour les éléments, le style par défaut (et / ou la police - mais c'est maintenant obsolète) déclaré dans l'élément racine <jasperReport /> sera appliqué.

La définition de styles ou de polices par défaut dans JasperReports n'est pas obligatoire. Si aucune police n'est définie pour un élément donné, le moteur recherche soit les attributs de police hérités, soit, si aucun attribut n'est trouvé de cette manière, il recherche la propriété net.sf.jasperreports.default.font.name dans le fichier / Fichier src / default.jasperreports.properties . Sa valeur définit le nom de la famille de polices à utiliser lorsque les propriétés de police ne sont pas explicitement définies pour un élément de texte ou héritées de son parent.

Les principales propriétés de police par défaut et leurs valeurs définies dans le fichier /src/default.jasperreports.properties se trouvent dans le tableau ci-dessous -

Propriété La description
net.sf.jasperreports.default.font.name = SansSerif Le nom de police par défaut.
net.sf.jasperreports.default.font.size = 10 La taille de police par défaut.
net.sf.jasperreports.default.pdf.font.name = Helvetica La police PDF par défaut.
net.sf.jasperreports.default.pdf.encoding = Cp1252 Le codage de caractères PDF par défaut.
net.sf.jasperreports.default.pdf.embedded = false Par défaut, les polices PDF ne sont pas intégrées.

Exemple

Pour démontrer l'utilisation des polices et des attributs de police afin d'obtenir une apparence de texte particulière, écrivons un nouveau modèle de rapport (jasper_report_template.jrxml). Le contenu du JRXML est comme ci-dessous. Enregistrez-le dans le répertoire C: \ tools \ jasperreports-5.0.1 \ test. Ici, nous afficherons un texte dans le titre du rapport dans différents formats de police.

<?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>

Le code java pour remplir et générer le rapport est indiqué ci-dessous. Sauvegardons ce fichierJasperFontsReportFill.java dans le répertoire 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();
      }

   }
}

Ici, nous utilisons une instance de JREmptyDataSource lors du remplissage des rapports pour simuler une source de données avec un enregistrement, mais avec tous les champs étant nuls .

Génération de rapports

Nous compilerons et exécuterons le fichier ci-dessus en utilisant notre processus de construction ANT normal. Le contenu du fichier build.xml (enregistré sous le répertoire C: \ tools \ jasperreports-5.0.1 \ test) est indiqué ci-dessous.

Le fichier d'importation - baseBuild.xml est choisi dans le chapitre Configuration de l'environnement et doit être placé dans le même répertoire que 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>

Ensuite, ouvrons la fenêtre de ligne de commande et allons dans le répertoire où build.xml est placé. Enfin, exécutez la commandeant -Dmain-class=com.tutorialspoint.JasperFontsReportFill (viewFullReport est la cible par défaut) comme -

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

À la suite de la compilation ci-dessus, une fenêtre JasperViewer s'ouvre comme indiqué dans l'écran ci-dessous -

Ici, nous pouvons voir que le texte "Bienvenue dans TutorialsPoint" est affiché dans différents formats de police.