Schriftarten melden

Ein Bericht enthält Textelemente, von denen jedes seine eigenen Schriftarteinstellungen haben kann. Diese Einstellungen können mit <festgelegt werdenfont> Tag im <textElement> -Tag verfügbar. Ein Bericht kann mehrere Schriftarten definieren. Einmal definiert, können sie als Standard- oder Basisschriftarteneinstellungen für andere Schriftartdefinitionen im gesamten Bericht verwendet werden.

Schriftarten melden

Eine Berichtsschriftart ist eine Sammlung von Schriftarteneinstellungen, die auf Berichtsebene deklariert werden. Eine Berichtsschriftart kann in der gesamten Berichtsvorlage wiederverwendet werden, wenn die Schrifteigenschaften von Textelementen festgelegt werden.

Berichtsschriftarten sind jetzt veraltet. Verwenden Sie keine <reportFont /> -Elemente, die im Dokument selbst deklariert sind. Verwenden Sie stattdessen das Element <style />.

Schriftattribute

Die folgende Tabelle fasst die Hauptattribute des <zusammenfont> Element -

S.NO. Attribut und Beschreibung
1

fontName

Der Schriftname, der der Name einer physischen, einer logischen oder der Name einer Schriftfamilie aus den registrierten JasperReports-Schrifterweiterungen sein kann.

2

size

Die Größe der Schrift in Punkten. Der Standardwert ist 10.

3

isBold

Das Flag, das angibt, ob eine fette Schrift erforderlich ist. Der Standardwert ist false.

4

isItalic

Das Flag, das angibt, ob eine kursive Schrift erforderlich ist. Der Standardwert ist false.

5

isUnderline

Das Flag, das angibt, ob die unterstrichene Textdekoration erforderlich ist. Der Standardwert ist false.

6

isStrikeThrough

Das Flag, das angibt, ob die durchgestrichene Textdekoration erforderlich ist. Der Standardwert ist false.

7

pdfFontName

Der Name einer entsprechenden PDF-Schriftart, die von der iText-Bibliothek beim Exportieren von Dokumenten in das PDF-Format benötigt wird.

8

pdfEncoding

Die entsprechende PDF-Zeichencodierung, die auch von der iText-Bibliothek benötigt wird.

9

isPdfEmbedded

Das Flag, das angibt, ob die Schriftart in das Dokument selbst eingebettet werden soll. Der Standardwert ist false. Wenn true festgelegt ist, können Sie das PDF-Dokument problemlos anzeigen.

Schriftarten

In JasperReports können Schriftarten wie folgt kategorisiert werden:

  • Logical Fonts- Fünf Schriftarten, die seit Version 1.0 von der Java-Plattform erkannt werden, werden als logische Schriftarten bezeichnet. Dies sind -Serif, SansSerif, Monospaced, Dialog, and DialogInput. Diese logischen Schriftarten sind keine tatsächlichen Schriftartenbibliotheken, die irgendwo auf dem System installiert sind. Es handelt sich lediglich um Schrifttypnamen, die von der Java-Laufzeit erkannt werden. Diese müssen einer physischen Schriftart zugeordnet sein, die auf dem System installiert ist.

  • Physical Fonts- Diese Schriftarten sind die eigentlichen Schriftbibliotheken, die beispielsweise aus TrueType- oder PostScript Type 1-Schriftarten bestehen. Die physischen Schriftarten können Arial, Time, Helvetica, Courier oder eine beliebige Anzahl anderer Schriftarten sein, einschließlich internationaler Schriftarten.

  • Font Extensions- Die JasperReports-Bibliothek kann zur Laufzeit direkt registrierte Schriftarten verwenden, da sie integrierte Schriftartenerweiterungen unterstützt. Eine Liste von Schriftfamilien kann den JasperReports mithilfe der Schrifterweiterung zur Verfügung gestellt werden. Diese bestehen aus ähnlich aussehenden Schriftarten und unterstützen bestimmte Gebietsschemas.

Wie in der obigen Tabelle beschrieben, müssen wir im Attribut fontName den Namen einer physischen Schriftart, den Namen einer logischen Schriftart oder den Namen einer Schriftfamilie aus den registrierten JasperReports-Schriftartenerweiterungen angeben .

PDF-Schriftname

Die JasperReports-Bibliothek verwendet die iText-Bibliothek beim Exportieren von Berichten in PDF (Portable Document Format). PDF-Dateien können auf verschiedenen Plattformen angezeigt werden und sehen immer gleich aus. Dies liegt teilweise daran, dass es in diesem Format eine spezielle Art des Umgangs mit Schriftarten gibt. Das Attribut fontName ist beim Exportieren in PDF nicht hilfreich . Das Attribut pdfFontName ist vorhanden, in dem die Schriftarteinstellungen angegeben werden müssen.

Die iText-Bibliothek kann mit integrierten Schriftarten und TTF-Dateien umgehen und erkennt die folgenden integrierten Schriftnamen:

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

Gemäß der Voraussetzung für die iText-Bibliothek müssen wir für die Arbeit mit Schriftarten einen der folgenden Namen als Schriftartnamen angeben:

  • Ein integrierter Schriftname aus der obigen Liste.

  • Der Name einer TTF-Datei (True Type Font), die auf der Festplatte gefunden werden kann.

  • Der tatsächliche Name der Schriftart, vorausgesetzt, die TTF-Datei, die die Schriftart enthält, wurde zuvor bei iText registriert oder es wurde ein Alias ​​definiert, als die Schriftart registriert wurde.

Basierend auf den oben genannten Voraussetzungen kann das Attribut pdfFontName einen der folgenden Werte enthalten:

  • Der Name einer integrierten PDF-Schriftart aus der obigen Liste.

  • Der Name einer TTF-Datei, die sich zur Laufzeit beim Exportieren in PDF auf der Festplatte befinden kann.

  • Der echte Name einer registrierten Schriftart.

  • Das Suffix des Schlüssels (der Teil nach net.sf.jasperreports.export.pdf.font ) für eine bei iText als Schriftartdatei registrierte Schriftart.

Standardschriftarten und Vererbung

Jedes Textelement erbt Schrift- und Stilattribute von seinem übergeordneten Element, das diese Attribute wiederum von seinem übergeordneten Element erbt. Wenn für Elemente keine Stile und / oder Schriftarten definiert sind, wird der im Stammelement <jasperReport /> deklarierte Standardstil (und / oder die Schriftart - dies ist jetzt veraltet) angewendet.

Das Definieren von Standardstilen oder Schriftarten in JasperReports ist nicht obligatorisch. Wenn für ein bestimmtes Element keine Schriftart definiert ist, sucht die Engine entweder nach den geerbten Schriftattributen oder, wenn auf diese Weise keine Attribute gefunden werden, nach der Eigenschaft net.sf.jasperreports.default.font.name in der Datei / Datei src / default.jasperreports.properties . Sein Wert definiert den Namen der Schriftfamilie, die verwendet werden soll, wenn die Schrifteigenschaften nicht explizit für ein Textelement definiert oder von seinem übergeordneten Element geerbt werden.

Die wichtigsten Standardschriftarteneigenschaften und ihre in der Datei /src/default.jasperreports.properties definierten Werte sind in der folgenden Tabelle aufgeführt:

Eigentum Beschreibung
net.sf.jasperreports.default.font.name = SansSerif Der Standardschriftname.
net.sf.jasperreports.default.font.size = 10 Die Standardschriftgröße.
net.sf.jasperreports.default.pdf.font.name = Helvetica Die Standard-PDF-Schriftart.
net.sf.jasperreports.default.pdf.encoding = Cp1252 Die Standardcodierung für PDF-Zeichen.
net.sf.jasperreports.default.pdf.embedded = false Standardmäßig werden PDF-Schriftarten nicht eingebettet.

Beispiel

Um die Verwendung von Schriftarten und Schriftattributen zu demonstrieren, um ein bestimmtes Erscheinungsbild des Textes zu erhalten, schreiben wir eine neue Berichtsvorlage (jasper_report_template.jrxml). Der Inhalt der JRXML ist wie folgt. Speichern Sie es im Verzeichnis C: \ tools \ jasperreports-5.0.1 \ test. Hier zeigen wir einen Text im Titel des Berichts in verschiedenen Schriftformaten an.

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

Der Java-Code zum Ausfüllen und Generieren des Berichts lautet wie folgt. Speichern wir diese DateiJasperFontsReportFill.java in das Verzeichnis 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();
      }

   }
}

Hier verwenden wir eine Instanz von JREmptyDataSource beim Füllen von Berichten, um eine Datenquelle mit einem Datensatz zu simulieren, wobei jedoch alle Felder null sind .

Berichterstellung

Wir werden die obige Datei mit unserem regulären ANT-Erstellungsprozess kompilieren und ausführen. Der Inhalt der Datei build.xml (gespeichert im Verzeichnis C: \ tools \ jasperreports-5.0.1 \ test) ist wie folgt.

Die Importdatei - baseBuild.xml wird aus dem Kapitel Umgebungs-Setup ausgewählt und sollte im selben Verzeichnis wie die build.xml abgelegt werden.

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

Öffnen Sie als Nächstes das Befehlszeilenfenster und wechseln Sie in das Verzeichnis, in dem build.xml abgelegt ist. Führen Sie abschließend den Befehl ausant -Dmain-class=com.tutorialspoint.JasperFontsReportFill (viewFullReport ist das Standardziel) als -

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

Als Ergebnis der obigen Kompilierung wird ein JasperViewer-Fenster geöffnet, wie im folgenden Bildschirm gezeigt -

Hier sehen wir, dass der Text "Willkommen bei TutorialsPoint" in verschiedenen Schriftformaten angezeigt wird.