Zgłoś czcionki

Raport zawiera elementy tekstowe, a każdy z nich może mieć własne ustawienia czcionek. Te ustawienia można określić za pomocą <font> dostępny w tagu <textElement>. Raport może definiować liczbę czcionek. Po zdefiniowaniu można ich używać jako domyślnych lub podstawowych ustawień czcionek dla innych definicji czcionek w całym raporcie.

Zgłoś czcionki

Czcionka raportu to zbiór ustawień czcionek zadeklarowanych na poziomie raportu. Czcionkę raportu można ponownie wykorzystać w całym szablonie raportu podczas ustawiania właściwości czcionki elementów tekstowych.

Czcionki raportów są teraz przestarzałe. Nie używaj elementów <reportFont /> zadeklarowanych w samym dokumencie. Zamiast tego użyj elementu <style />.

Atrybuty czcionek

Poniższa tabela zawiera podsumowanie głównych atrybutów <font> element -

S.NO Atrybut i opis
1

fontName

Nazwa czcionki, która może być nazwą czcionki fizycznej, logicznej lub nazwą rodziny czcionek z zarejestrowanych rozszerzeń czcionek JasperReports.

2

size

Wielkość czcionki mierzona w punktach. Domyślnie 10.

3

isBold

Flaga określająca, czy wymagana jest pogrubiona czcionka. Domyślnie jest to fałsz.

4

isItalic

Flaga określająca, czy wymagana jest kursywa. Domyślnie jest to fałsz.

5

isUnderline

Flaga określająca, czy wymagane jest podkreślenie tekstu. Domyślnie jest to fałsz.

6

isStrikeThrough

Flaga określająca, czy wymagana jest dekoracja tekstu przekreślonego. Domyślnie jest to fałsz.

7

pdfFontName

Nazwa równoważnej czcionki PDF wymaganej przez bibliotekę iText podczas eksportowania dokumentów do formatu PDF.

8

pdfEncoding

Równoważne kodowanie znaków PDF, również wymagane przez bibliotekę iText.

9

isPdfEmbedded

Flaga określająca, czy czcionka powinna być osadzona w samym dokumencie. Domyślnie jest to fałsz. Jeśli ustawione na true, pomaga przeglądać dokument PDF bez żadnego problemu.

Typy czcionek

W JasperReports czcionki można podzielić na -

  • Logical Fonts- Pięć typów czcionek, które zostały rozpoznane przez platformę Java od wersji 1.0, nazywa się czcionkami logicznymi. To są -Serif, SansSerif, Monospaced, Dialog, and DialogInput. Te czcionki logiczne nie są rzeczywistymi bibliotekami czcionek zainstalowanymi w dowolnym miejscu w systemie. Są to jedynie nazwy typów czcionek rozpoznawane przez środowisko wykonawcze Java. Muszą być one odwzorowane na jakąś fizyczną czcionkę zainstalowaną w systemie.

  • Physical Fonts- Te czcionki to rzeczywiste biblioteki czcionek, składające się na przykład z czcionek TrueType lub PostScript Type 1. Fizyczne czcionki mogą być czcionkami Arial, Time, Helvetica, Courier lub dowolną liczbą innych czcionek, w tym czcionkami międzynarodowymi.

  • Font Extensions- Biblioteka JasperReports może korzystać z czcionek zarejestrowanych w locie w czasie wykonywania, dzięki wbudowanej obsłudze rozszerzeń czcionek. Listę rodzin czcionek można udostępnić w JasperReports za pomocą rozszerzenia czcionki. Są one wykonane z podobnie wyglądających czcionek i obsługują określone ustawienia regionalne.

Jak opisano w powyższej tabeli, musimy określić w atrybucie fontName nazwę czcionki fizycznej, nazwę czcionki logicznej lub nazwę rodziny czcionek z zarejestrowanych rozszerzeń czcionek JasperReports.

Nazwa czcionki PDF

Biblioteka JasperReports korzysta z biblioteki iText podczas eksportowania raportów do formatu PDF (Portable Document Format). Pliki PDF można wyświetlać na różnych platformach i zawsze będą wyglądać tak samo. Dzieje się tak częściowo dlatego, że w tym formacie istnieje specjalny sposób postępowania z czcionkami. Atrybut fontName nie jest przydatny podczas eksportowania do formatu PDF. Atrybut pdfFontName istnieje tam, gdzie musimy określić ustawienia czcionki.

Biblioteka iText wie, jak radzić sobie z wbudowanymi czcionkami i plikami TTF i rozpoznaje następujące wbudowane nazwy czcionek -

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

Zgodnie z wymaganiami wstępnymi biblioteki iText, aby pracować z czcionkami, musimy określić jedną z następujących nazw jako nazwę czcionki -

  • Wbudowana nazwa czcionki z powyższej listy.

  • Nazwa pliku TTF (True Type Font), który można zlokalizować na dysku.

  • Prawdziwa nazwa czcionki, pod warunkiem, że plik TTF zawierający czcionkę został wcześniej zarejestrowany w iText lub że podczas rejestracji czcionki został zdefiniowany alias.

W oparciu o powyższe wymagania wstępne atrybut pdfFontName może zawierać jedną z następujących wartości -

  • Nazwa wbudowanej czcionki PDF z powyższej listy.

  • Nazwa pliku TTF, który może znajdować się na dysku w czasie wykonywania podczas eksportowania do formatu PDF.

  • Prawdziwa nazwa zarejestrowanej czcionki.

  • Sufiks klucza (część po net.sf.jasperreports.export.pdf.font ) dla czcionki zarejestrowanej w iText jako plik czcionki.

Domyślne czcionki i dziedziczenie

Każdy element tekstowy dziedziczy atrybuty czcionki i stylu po swoim elemencie nadrzędnym, który z kolei dziedziczy te atrybuty po swoim nadrzędnym. Jeśli dla elementów nie zdefiniowano żadnych stylów i / lub czcionek, zostanie zastosowany styl domyślny (i / lub czcionka - ale jest to obecnie przestarzałe) zadeklarowane w elemencie głównym <jasperReport />.

Definiowanie domyślnych stylów lub czcionek w JasperReports nie jest obowiązkowe. Jeśli dla danego elementu nie jest zdefiniowana żadna czcionka, silnik szuka odziedziczonych atrybutów czcionki lub, jeśli w ten sposób nie ma żadnych atrybutów, szuka właściwości net.sf.jasperreports.default.font.name w / Plik src / default.jasperreports.properties . Jego wartość określa nazwę rodziny czcionek, która ma być używana, gdy właściwości czcionki nie są jawnie zdefiniowane dla elementu tekstowego lub dziedziczone po jego rodzicu.

Główne domyślne właściwości czcionek i ich wartości zdefiniowane w pliku /src/default.jasperreports.properties znajdują się w poniższej tabeli -

własność Opis
net.sf.jasperreports.default.font.name = SansSerif Domyślna nazwa czcionki.
net.sf.jasperreports.default.font.size = 10 Domyślny rozmiar czcionki.
net.sf.jasperreports.default.pdf.font.name = Helvetica Domyślna czcionka PDF.
net.sf.jasperreports.default.pdf.encoding = Cp1252 Domyślne kodowanie znaków PDF.
net.sf.jasperreports.default.pdf.embedded = false Domyślnie czcionki PDF nie są osadzane.

Przykład

Aby zademonstrować użycie czcionek i atrybutów czcionek w celu uzyskania określonego wyglądu tekstu, napiszmy nowy szablon raportu (jasper_report_template.jrxml). Zawartość JRXML jest jak poniżej. Zapisz go w katalogu C: \ tools \ jasperreports-5.0.1 \ test. Tutaj w tytule raportu wyświetlimy tekst w różnych formatach czcionek.

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

Kod java do wypełnienia i wygenerowania raportu jest podany poniżej. Zapiszmy ten plikJasperFontsReportFill.java do katalogu 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();
      }

   }
}

W tym przypadku używamy wystąpienia JREmptyDataSource podczas wypełniania raportów, aby symulować źródło danych z jednym rekordem, ale wszystkie pola mają wartość null .

Generowanie raportów

Skompilujemy i uruchomimy powyższy plik przy użyciu naszego zwykłego procesu budowania ANT. Zawartość pliku build.xml (zapisanego w katalogu C: \ tools \ jasperreports-5.0.1 \ test) jest taka, jak podano poniżej.

Plik importu - baseBuild.xml jest pobierany z rozdziału Konfiguracja środowiska i powinien być umieszczony w tym samym katalogu co 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>

Następnie otwórzmy okno wiersza poleceń i przejdźmy do katalogu, w którym znajduje się plik build.xml. Na koniec wykonaj polecenieant -Dmain-class=com.tutorialspoint.JasperFontsReportFill (domyślnym celem jest viewFullReport) jako -

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

W wyniku powyższej kompilacji otworzy się okno JasperViewer, jak pokazano na poniższym ekranie -

Tutaj widzimy, że tekst „Witamy w TutorialsPoint” jest wyświetlany w różnych formatach czcionek.