Phông chữ Báo cáo
Một báo cáo chứa các phần tử văn bản và mỗi phần tử này có thể có cài đặt phông chữ riêng. Các cài đặt này có thể được chỉ định bằng cách sử dụng <font> có sẵn trong thẻ <textElement>. Một báo cáo có thể xác định một số phông chữ. Sau khi được xác định, chúng có thể được sử dụng làm cài đặt phông chữ mặc định hoặc cơ sở cho các định nghĩa phông chữ khác trong toàn bộ báo cáo.
Phông chữ Báo cáo
Phông chữ báo cáo là một tập hợp các cài đặt phông chữ, được khai báo ở cấp báo cáo. Phông chữ báo cáo có thể được sử dụng lại trong toàn bộ mẫu báo cáo khi đặt thuộc tính phông chữ của các phần tử văn bản.
Phông chữ báo cáo hiện không được dùng nữa. Không sử dụng các phần tử <reportFont /> được khai báo trong chính tài liệu. Sử dụng phần tử <style /> để thay thế.
Thuộc tính phông chữ
Bảng dưới đây tóm tắt các thuộc tính chính của <font> phần tử -
S.NO | Thuộc tính và mô tả |
---|---|
1 | fontName Tên phông chữ, có thể là tên của phông chữ vật lý, phông chữ logic hoặc tên của họ phông chữ từ các phần mở rộng phông chữ JasperReports đã đăng ký. |
2 | size Kích thước của phông chữ được đo bằng điểm. Nó mặc định là 10. |
3 | isBold Cờ chỉ định nếu cần phải có phông chữ đậm. Nó mặc định là false. |
4 | isItalic Cờ chỉ định xem phông chữ nghiêng có được yêu cầu hay không. Nó mặc định là false. |
5 | isUnderline Cờ chỉ định xem trang trí văn bản gạch dưới có được yêu cầu hay không. Nó mặc định là false. |
6 | isStrikeThrough Cờ chỉ định xem trang trí văn bản gạch ngang có được yêu cầu hay không. Nó mặc định là false. |
7 | pdfFontName Tên của một phông chữ PDF tương đương mà thư viện iText yêu cầu khi xuất tài liệu sang định dạng PDF. |
số 8 | pdfEncoding Thư viện iText cũng yêu cầu mã hóa ký tự PDF tương đương. |
9 | isPdfEmbedded Cờ chỉ định liệu phông chữ có được nhúng vào tài liệu hay không. Nó mặc định là false. Nếu được đặt thành true, giúp xem tài liệu PDF mà không gặp bất kỳ sự cố nào. |
Các loại phông chữ
Trong JasperReports, phông chữ có thể được phân loại là:
Logical Fonts- Năm loại phông chữ, đã được nền tảng Java công nhận từ phiên bản 1.0, được gọi là phông chữ logic. Đây là -Serif, SansSerif, Monospaced, Dialog, and DialogInput. Các phông chữ hợp lý này không phải là thư viện phông chữ thực tế được cài đặt ở bất kỳ đâu trên hệ thống. Chúng chỉ đơn thuần là tên loại phông chữ được thời gian chạy Java nhận dạng. Chúng phải được ánh xạ tới một số phông chữ vật lý được cài đặt trên hệ thống.
Physical Fonts- Những phông chữ này là thư viện phông chữ thực tế bao gồm, ví dụ, phông chữ TrueType hoặc PostScript Loại 1. Phông chữ thực có thể là Arial, Time, Helvetica, Courier hoặc bất kỳ phông chữ nào khác, bao gồm cả phông chữ quốc tế.
Font Extensions- Thư viện JasperReports có thể sử dụng các phông chữ được đăng ký nhanh chóng trong thời gian chạy, thông qua hỗ trợ tích hợp cho các phần mở rộng phông chữ. Danh sách các họ phông chữ có thể được cung cấp cho JasperReports bằng cách sử dụng phần mở rộng phông chữ. Chúng được tạo ra từ các mặt phông chữ trông giống nhau và hỗ trợ các ngôn ngữ cụ thể.
Như được mô tả trong bảng trên, chúng ta cần chỉ định trong thuộc tính fontName tên của phông chữ vật lý, tên của phông chữ logic hoặc tên của họ phông chữ từ các phần mở rộng phông chữ JasperReports đã đăng ký.
Tên phông chữ PDF
Thư viện JasperReports sử dụng thư viện iText, khi xuất báo cáo sang PDF (Định dạng Tài liệu Di động). Các tệp PDF có thể được xem trên nhiều nền tảng khác nhau và sẽ luôn giống nhau. Điều này một phần là do ở định dạng này, có một cách xử lý phông chữ đặc biệt. Thuộc tính fontName không có ích khi xuất sang PDF. Thuộc tính pdfFontName tồn tại nơi chúng ta cần chỉ định cài đặt phông chữ.
Thư viện iText biết cách xử lý các phông chữ và tệp TTF dựng sẵn và nhận dạng các tên phông chữ cài sẵn sau:
- Courier
- Courier-Bold
- Courier-BoldOblique
- Courier-Oblique
- Helvetica
- Helvetica-Bold
- Helvetica-BoldOblique
- Helvetica-Oblique
- Symbol
- Times-Roman
- Times-Bold
- Times-BoldItalic
- Times-Italic
- ZapfDingbats
Theo điều kiện tiên quyết của thư viện iText, để làm việc với phông chữ, chúng ta cần chỉ định một trong những điều sau làm tên phông chữ:
Tên phông chữ cài sẵn từ danh sách trên.
Tên của tệp TTF (True Type Font) mà nó có thể định vị trên đĩa.
Tên thật của phông chữ, với điều kiện là tệp TTF có chứa phông chữ đã được đăng ký trước đó với iText hoặc một bí danh đã được xác định khi phông chữ được đăng ký.
Dựa trên các điều kiện tiên quyết ở trên, thuộc tính pdfFontName có thể chứa một trong các giá trị sau:
Tên của phông chữ PDF cài sẵn từ danh sách trên.
Tên của tệp TTF có thể nằm trên đĩa trong thời gian chạy khi xuất sang PDF.
Tên thật của phông chữ đã đăng ký.
Hậu tố của khóa (phần sau net.sf.jasperreports.export.pdf.font ) cho phông chữ được đăng ký với iText dưới dạng tệp phông chữ.
Phông chữ Mặc định và Kế thừa
Mỗi phần tử văn bản kế thừa các thuộc tính phông chữ và kiểu từ phần tử mẹ của nó, đến lượt nó kế thừa các thuộc tính này từ phần tử mẹ của nó. Nếu không có kiểu và / hoặc phông chữ nào được xác định cho các phần tử, thì kiểu mặc định (và / hoặc phông chữ - nhưng kiểu này hiện không được dùng nữa) được khai báo trong phần tử gốc <jasperReport /> sẽ được áp dụng.
Việc xác định kiểu hoặc phông chữ mặc định trong JasperReports là không bắt buộc. Nếu không có phông chữ nào được xác định cho một phần tử nhất định, công cụ sẽ tìm các thuộc tính phông chữ kế thừa hoặc nếu không tìm thấy thuộc tính nào theo cách này, nó sẽ tìm thuộc tính net.sf.jasperreports.default.font.name trong / Tệp src / default.jasperreports.properties . Giá trị của nó xác định tên của họ phông chữ sẽ được sử dụng khi các thuộc tính phông chữ không được xác định rõ ràng cho một phần tử văn bản hoặc được kế thừa từ cha mẹ của nó.
Các thuộc tính phông chữ mặc định chính và giá trị của chúng được xác định trong tệp /src/default.jasperreports.properties nằm trong bảng bên dưới:
Bất động sản | Sự miêu tả |
---|---|
net.sf.jasperreports.default.font.name = SansSerif | Tên phông chữ mặc định. |
net.sf.jasperreports.default.font.size = 10 | Kích thước phông chữ mặc định. |
net.sf.jasperreports.default.pdf.font.name = Helvetica | Phông chữ PDF mặc định. |
net.sf.jasperreports.default.pdf.encoding = Cp1252 | Mã hóa ký tự PDF mặc định. |
net.sf.jasperreports.default.pdf.embedded = false | Theo mặc định, phông chữ PDF không được nhúng. |
Thí dụ
Để chứng minh bằng cách sử dụng phông chữ và các thuộc tính phông chữ để có được giao diện văn bản cụ thể, hãy viết mẫu báo cáo mới (jasper_report_template.jrxml). Nội dung của JRXML như dưới đây. Lưu nó vào thư mục C: \ tools \ jasperreports-5.0.1 \ test. Tại đây, chúng tôi sẽ hiển thị một văn bản trong tiêu đề của báo cáo với nhiều định dạng phông chữ khác nhau.
<?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>
Mã java để điền và tạo báo cáo như dưới đây. Hãy lưu tệp nàyJasperFontsReportFill.java vào thư mục 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();
}
}
}
Ở đây, chúng tôi sử dụng một phiên bản của JREmptyDataSource khi điền các báo cáo để mô phỏng nguồn dữ liệu có một bản ghi trong đó, nhưng với tất cả các trường là rỗng .
Tạo báo cáo
Chúng tôi sẽ biên dịch và thực thi tệp trên bằng quy trình xây dựng ANT thông thường của chúng tôi. Nội dung của tệp build.xml (được lưu trong thư mục C: \ tools \ jasperreports-5.0.1 \ test) như dưới đây.
Tệp nhập - baseBuild.xml được chọn từ chương Thiết lập môi trường và phải được đặt trong cùng thư mục với 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>
Tiếp theo, hãy mở cửa sổ dòng lệnh và đi đến thư mục nơi build.xml được đặt. Cuối cùng, thực hiện lệnhant -Dmain-class=com.tutorialspoint.JasperFontsReportFill (viewFullReport là mục tiêu mặc định) là -
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
Kết quả của quá trình biên dịch ở trên, một cửa sổ JasperViewer mở ra như được hiển thị trong màn hình dưới đây:
Ở đây, chúng ta có thể thấy rằng văn bản "Chào mừng đến với TutorialsPoint" được hiển thị ở các định dạng phông chữ khác nhau.