Fuentes de informe

Un informe contiene elementos de texto y cada uno de ellos puede tener su propia configuración de fuente. Estos ajustes se pueden especificar usando el <font> etiqueta disponible en la etiqueta <textElement>. Un informe puede definir varias fuentes. Una vez definidas, pueden utilizarse como configuración de fuente predeterminada o base para otras definiciones de fuente en todo el informe.

Fuentes de informe

Una fuente de informe es una colección de configuraciones de fuente, declarada a nivel de informe. Una fuente de informe se puede reutilizar en toda la plantilla de informe al configurar las propiedades de fuente de los elementos de texto.

Las fuentes de informes ahora están en desuso. No utilice elementos <reportFont /> declarados dentro del propio documento. En su lugar, utilice el elemento <style />.

Atributos de fuente

La siguiente tabla resume los principales atributos de <font> elemento -

S.NO Atributo y descripción
1

fontName

El nombre de la fuente, que puede ser el nombre de una fuente física, una lógica o el nombre de una familia de fuentes de las extensiones de fuentes registradas de JasperReports.

2

size

El tamaño de la fuente medido en puntos. El valor predeterminado es 10.

3

isBold

La bandera que especifica si se requiere una fuente en negrita. Su valor predeterminado es falso.

4

isItalic

La bandera que especifica si se requiere una fuente en cursiva. Su valor predeterminado es falso.

5

isUnderline

La bandera que especifica si se requiere la decoración del texto subrayado. Su valor predeterminado es falso.

6

isStrikeThrough

La bandera que especifica si se requiere la decoración de texto tachado. Su valor predeterminado es falso.

7

pdfFontName

El nombre de una fuente PDF equivalente requerida por la biblioteca iText al exportar documentos a formato PDF.

8

pdfEncoding

La codificación de caracteres PDF equivalente, también requerida por la biblioteca iText.

9

isPdfEmbedded

La bandera que especifica si la fuente debe estar incrustada en el documento. Su valor predeterminado es falso. Si se establece en verdadero, ayuda a ver el documento PDF sin ningún problema.

Tipos de fuentes

En JasperReports, las fuentes se pueden clasificar como:

  • Logical Fonts- Cinco tipos de fuentes, que han sido reconocidos por la plataforma Java desde la versión 1.0, se denominan fuentes lógicas. Estos son ...Serif, SansSerif, Monospaced, Dialog, and DialogInput. Estas fuentes lógicas no son bibliotecas de fuentes reales que estén instaladas en cualquier parte del sistema. Son simplemente nombres de tipo de fuente reconocidos por el tiempo de ejecución de Java. Estos deben asignarse a alguna fuente física que esté instalada en el sistema.

  • Physical Fonts- Estas fuentes son las bibliotecas de fuentes reales que constan, por ejemplo, de fuentes TrueType o PostScript Type 1. Las fuentes físicas pueden ser Arial, Time, Helvetica, Courier o cualquier número de otras fuentes, incluidas las internacionales.

  • Font Extensions- La biblioteca JasperReports puede hacer uso de fuentes registradas sobre la marcha en tiempo de ejecución, a través de su soporte integrado para extensiones de fuentes. Se puede poner a disposición de JasperReports una lista de familias de fuentes utilizando la extensión de fuente. Estos están hechos de fuentes de aspecto similar y admiten configuraciones regionales específicas.

Como se describe en la tabla anterior, necesitamos especificar en el atributo fontName el nombre de una fuente física, el nombre de una fuente lógica o el nombre de una familia de fuentes de las extensiones de fuente JasperReports registradas.

Nombre de fuente PDF

La biblioteca JasperReports utiliza la biblioteca iText, al exportar informes a PDF (formato de documento portátil). Los archivos PDF se pueden ver en varias plataformas y siempre tendrán el mismo aspecto. Esto se debe en parte a que en este formato hay una forma especial de tratar las fuentes. El atributo fontName no sirve para exportar a PDF. El atributo pdfFontName existe donde necesitamos especificar la configuración de fuente.

La biblioteca iText sabe cómo tratar con fuentes integradas y archivos TTF y reconoce los siguientes nombres de fuentes integradas:

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

Según el requisito previo de la biblioteca iText, para trabajar con fuentes, debemos especificar uno de los siguientes como nombre de fuente:

  • Un nombre de fuente integrado de la lista anterior.

  • El nombre de un archivo TTF (True Type Font), que puede ubicar en el disco.

  • El nombre real de la fuente, siempre que el archivo TTF que contiene la fuente haya sido previamente registrado con iText o que se haya definido un alias cuando se registró la fuente.

Según los requisitos previos anteriores, el atributo pdfFontName puede contener uno de los siguientes valores:

  • El nombre de una fuente PDF incorporada de la lista anterior.

  • El nombre de un archivo TTF que se puede ubicar en el disco en tiempo de ejecución al exportar a PDF.

  • El nombre real de una fuente registrada.

  • El sufijo de la clave (la parte después de net.sf.jasperreports.export.pdf.font ) para una fuente registrada con iText como un archivo de fuente.

Fuentes y herencia predeterminadas

Cada elemento de texto hereda los atributos de fuente y estilo de su elemento principal, que a su vez hereda estos atributos de su elemento principal. Si no se definen estilos y / o fuentes para los elementos, se aplicará el estilo predeterminado (y / o fuente, pero ahora está en desuso) declarado en el elemento raíz <jasperReport />.

No es obligatorio definir estilos o fuentes predeterminados en JasperReports. Si no se define una fuente para un elemento dado, el motor busca los atributos de fuente heredados o, si no se encuentran atributos de esta manera, busca la propiedad net.sf.jasperreports.default.font.name en / src / default.jasperreports.properties archivo. Su valor define el nombre de la familia de fuentes que se utilizará cuando las propiedades de la fuente no se definan explícitamente para un elemento de texto o no se hereden de su padre.

Las principales propiedades de fuente predeterminadas y sus valores definidos en el archivo /src/default.jasperreports.properties se encuentran en la siguiente tabla:

Propiedad Descripción
net.sf.jasperreports.default.font.name = SansSerif El nombre de fuente predeterminado.
net.sf.jasperreports.default.font.size = 10 El tamaño de fuente predeterminado.
net.sf.jasperreports.default.pdf.font.name = Helvetica La fuente PDF predeterminada.
net.sf.jasperreports.default.pdf.encoding = Cp1252 La codificación de caracteres PDF predeterminada.
net.sf.jasperreports.default.pdf.embedded = false Por defecto, las fuentes PDF no están incrustadas.

Ejemplo

Para demostrar el uso de fuentes y atributos de fuente a fin de obtener una apariencia de texto en particular, escribamos una nueva plantilla de informe (jasper_report_template.jrxml). El contenido del JRXML es el siguiente. Guárdelo en el directorio C: \ tools \ jasperreports-5.0.1 \ test. Aquí, mostraremos un texto en el título del informe en varios formatos de fuente.

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

El código Java para completar y generar el informe es el que se indica a continuación. Guardemos este archivoJasperFontsReportFill.java al directorio 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();
      }

   }
}

Aquí, usamos una instancia de JREmptyDataSource al completar informes para simular una fuente de datos con un registro, pero con todos los campos nulos .

La generación del informe

Compilaremos y ejecutaremos el archivo anterior utilizando nuestro proceso de compilación ANT habitual. El contenido del archivo build.xml (guardado en el directorio C: \ tools \ jasperreports-5.0.1 \ test) es como se indica a continuación.

El archivo de importación, baseBuild.xml, se selecciona del capítulo Configuración del entorno y debe colocarse en el mismo directorio 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>

A continuación, abramos la ventana de la línea de comandos y vayamos al directorio donde se coloca build.xml. Finalmente, ejecute el comandoant -Dmain-class=com.tutorialspoint.JasperFontsReportFill (viewFullReport es el destino predeterminado) como -

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

Como resultado de la compilación anterior, se abre una ventana de JasperViewer como se muestra en la pantalla que se muestra a continuación:

Aquí, podemos ver que el texto "Bienvenido a TutorialsPoint" se muestra en diferentes formatos de fuente.