Laporkan Font
Laporan berisi elemen teks dan masing-masing dapat memiliki pengaturan font-nya sendiri. Pengaturan ini dapat ditentukan menggunakan <font> tersedia di tag <textElement>. Laporan dapat menentukan sejumlah font. Setelah ditentukan, mereka dapat digunakan sebagai default atau pengaturan font dasar untuk definisi font lain di seluruh laporan.
Laporkan Font
Font laporan adalah kumpulan pengaturan font, dideklarasikan di tingkat laporan. Font laporan bisa digunakan kembali di seluruh template laporan saat mengatur properti font elemen teks.
Font laporan sekarang sudah tidak digunakan lagi. Jangan gunakan elemen <reportFont /> yang dideklarasikan di dalam dokumen itu sendiri. Gunakan elemen <style /> sebagai gantinya.
Atribut Font
Tabel di bawah ini merangkum atribut utama <font> elemen -
S.NO | Atribut dan Deskripsi |
---|---|
1 | fontName Nama font, yang bisa menjadi nama font fisik, yang logis, atau nama keluarga font dari ekstensi font JasperReports terdaftar. |
2 | size Ukuran font diukur dalam poin. Ini defaultnya 10. |
3 | isBold Bendera menentukan apakah font tebal diperlukan. Ini defaultnya salah. |
4 | isItalic Bendera yang menentukan apakah font miring diperlukan. Ini defaultnya salah. |
5 | isUnderline Bendera yang menentukan apakah dekorasi teks garis bawah diperlukan. Ini defaultnya salah. |
6 | isStrikeThrough Bendera yang menentukan apakah dekorasi teks coret diperlukan. Ini defaultnya salah. |
7 | pdfFontName Nama font PDF yang setara yang diperlukan oleh perpustakaan iText saat mengekspor dokumen ke format PDF. |
8 | pdfEncoding Pengkodean karakter PDF yang setara, juga diperlukan oleh perpustakaan iText. |
9 | isPdfEmbedded Bendera yang menentukan apakah font harus disematkan ke dalam dokumen itu sendiri. Ini defaultnya salah. Jika disetel ke true, membantu melihat dokumen PDF tanpa masalah. |
Jenis Font
Di JasperReports font dapat dikategorikan sebagai -
Logical Fonts- Lima jenis font, yang telah dikenali oleh platform Java sejak versi 1.0, disebut font logis. Ini adalah -Serif, SansSerif, Monospaced, Dialog, and DialogInput. Font logis ini bukanlah pustaka font sebenarnya yang diinstal di mana saja di sistem. Mereka hanyalah nama jenis font yang dikenali oleh runtime Java. Ini harus dipetakan ke beberapa font fisik yang diinstal pada sistem.
Physical Fonts- Font ini adalah pustaka font sebenarnya yang terdiri dari, misalnya, font TrueType atau PostScript Type 1. Font fisik dapat berupa Arial, Time, Helvetica, Courier, atau sejumlah font lain, termasuk font internasional.
Font Extensions- Pustaka JasperReports dapat menggunakan font yang terdaftar secara on-the-fly saat runtime, melalui dukungan bawaan untuk ekstensi font. Daftar keluarga font dapat disediakan untuk JasperReports menggunakan ekstensi font. Ini dibuat dari tampilan font yang mirip dan mendukung lokal tertentu.
Seperti yang dijelaskan pada tabel di atas, kita perlu menentukan dalam atribut fontName nama font fisik, nama font logis, atau nama keluarga font dari ekstensi font JasperReports terdaftar.
Nama Font PDF
Pustaka JasperReports menggunakan pustaka iText, saat mengekspor laporan ke PDF (Portable Document Format). File PDF dapat dilihat di berbagai platform dan akan selalu terlihat sama. Ini sebagian karena dalam format ini, ada cara khusus menangani font. Atribut fontName tidak ada gunanya saat mengekspor ke PDF. Atribut pdfFontName ada di mana kita perlu menentukan pengaturan font.
Perpustakaan iText tahu bagaimana menangani font built-in dan file TTF dan mengenali nama font built-in berikut -
- Courier
- Courier-Bold
- Courier-BoldOblique
- Courier-Oblique
- Helvetica
- Helvetica-Bold
- Helvetica-BoldOblique
- Helvetica-Oblique
- Symbol
- Times-Roman
- Times-Bold
- Times-BoldItalic
- Times-Italic
- ZapfDingbats
Sesuai prasyarat perpustakaan iText, untuk bekerja dengan font, kita perlu menentukan salah satu dari berikut ini sebagai nama font -
Nama font bawaan dari daftar di atas.
Nama file TTF (True Type Font), yang dapat ditemukan di disk.
Nama asli dari font tersebut, asalkan file TTF yang berisi font tersebut telah didaftarkan sebelumnya dengan iText atau nama alias yang ditentukan saat font tersebut didaftarkan.
Berdasarkan prasyarat di atas, atribut pdfFontName dapat berisi salah satu dari nilai berikut -
Nama font PDF built-in dari daftar di atas.
Nama file TTF yang dapat ditempatkan di disk saat runtime saat mengekspor ke PDF.
Nama asli dari fonta terdaftar.
Akhiran kunci (bagian setelah net.sf.jasperreports.export.pdf.font ) untuk fonta yang terdaftar dengan iText sebagai file font.
Font Default dan Warisan
Setiap elemen teks mewarisi atribut font dan gaya dari elemen induknya, yang pada gilirannya mewarisi atribut ini dari induknya. Jika tidak ada gaya dan / atau font yang ditentukan untuk elemen, gaya default (dan / atau font - tetapi sekarang sudah tidak digunakan lagi) yang dideklarasikan dalam elemen root <jasperReport /> akan diterapkan.
Menentukan gaya atau font default di JasperReports tidak wajib. Jika tidak ada font yang ditentukan untuk elemen tertentu, mesin akan mencari atribut font yang diwariskan, atau, jika tidak ada atribut yang ditemukan dengan cara ini, mesin akan mencari properti net.sf.jasperreports.default.font.name di / src / default.jasperreports.properties . Nilainya mendefinisikan nama keluarga font yang akan digunakan ketika properti font tidak secara eksplisit ditentukan untuk elemen teks atau diwarisi dari induknya.
Properti font default utama dan nilainya ditentukan dalam file /src/default.jasperreports.properties ada pada tabel di bawah ini -
Properti | Deskripsi |
---|---|
net.sf.jasperreports.default.font.name = SansSerif | Nama font default. |
net.sf.jasperreports.default.font.size = 10 | Ukuran font default. |
net.sf.jasperreports.default.pdf.font.name = Helvetica | Font PDF default. |
net.sf.jasperreports.default.pdf.encoding = Cp1252 | Pengkodean karakter PDF default. |
net.sf.jasperreports.default.pdf.embedded = false | Secara default, font PDF tidak disematkan. |
Contoh
Untuk mendemonstrasikan penggunaan font dan atribut font untuk mendapatkan tampilan teks tertentu, mari buat template laporan baru (jasper_report_template.jrxml). Isi JRXML adalah sebagai berikut. Simpan ke direktori C: \ tools \ jasperreports-5.0.1 \ test. Di sini, kami akan menampilkan teks pada judul laporan dalam berbagai format font.
<?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>
Kode java untuk mengisi dan menghasilkan laporan seperti yang diberikan di bawah ini. Ayo simpan file iniJasperFontsReportFill.java ke 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();
}
}
}
Di sini, kami menggunakan instance JREmptyDataSource saat mengisi laporan untuk mensimulasikan sumber data dengan satu record di dalamnya, tetapi semua kolom bernilai null .
Pembuatan Laporan
Kami akan mengkompilasi dan mengeksekusi file di atas menggunakan proses build ANT reguler kami. Isi dari file build.xml (disimpan di bawah direktori C: \ tools \ jasperreports-5.0.1 \ test) seperti yang diberikan di bawah ini.
File impor - baseBuild.xml diambil dari bab Pengaturan Lingkungan dan harus ditempatkan di direktori yang sama dengan 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>
Selanjutnya, buka jendela baris perintah dan buka direktori tempat build.xml ditempatkan. Terakhir, jalankan perintahant -Dmain-class=com.tutorialspoint.JasperFontsReportFill (viewFullReport adalah target default) sebagai -
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
Sebagai hasil dari kompilasi di atas, jendela JasperViewer terbuka seperti yang ditunjukkan pada layar di bawah ini -
Di sini, kita dapat melihat bahwa teks "Selamat Datang di TutorialsPoint" ditampilkan dalam format font yang berbeda.