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.