รายงานแบบอักษร
รายงานประกอบด้วยองค์ประกอบข้อความและแต่ละองค์ประกอบสามารถมีการตั้งค่าแบบอักษรของตัวเอง การตั้งค่าเหล่านี้สามารถระบุได้โดยใช้ปุ่ม <font> มีอยู่ในแท็ก <textElement> รายงานสามารถกำหนดฟอนต์ได้หลายแบบ เมื่อกำหนดแล้วสามารถใช้เป็นการตั้งค่าแบบอักษรเริ่มต้นหรือฐานสำหรับคำจำกัดความแบบอักษรอื่น ๆ ได้ตลอดทั้งรายงาน
รายงานแบบอักษร
แบบอักษรรายงานคือชุดของการตั้งค่าแบบอักษรซึ่งประกาศในระดับรายงาน แบบอักษรรายงานสามารถใช้ซ้ำได้ตลอดทั้งเทมเพลตรายงานเมื่อตั้งค่าคุณสมบัติแบบอักษรขององค์ประกอบข้อความ
แบบอักษรรายงานเลิกใช้งานแล้ว อย่าใช้องค์ประกอบ <reportFont /> ที่ประกาศภายในเอกสารเอง ใช้องค์ประกอบ <style /> แทน
แอตทริบิวต์แบบอักษร
ตารางด้านล่างสรุปคุณสมบัติหลักของ <font> องค์ประกอบ -
ส. อบจ | คุณสมบัติและคำอธิบาย |
---|---|
1 | fontName ชื่อฟอนต์ซึ่งอาจเป็นชื่อของฟอนต์ทางกายภาพโลจิคัลหรือชื่อของตระกูลฟอนต์จากนามสกุลฟอนต์ JasperReports ที่ลงทะเบียน |
2 | size ขนาดของแบบอักษรที่วัดเป็นจุด ค่าเริ่มต้นคือ 10 |
3 | isBold แฟล็กที่ระบุว่าต้องใช้ฟอนต์ตัวหนาหรือไม่ ค่าเริ่มต้นเป็นเท็จ |
4 | isItalic แฟล็กที่ระบุว่าต้องใช้ฟอนต์ตัวเอียงหรือไม่ ค่าเริ่มต้นเป็นเท็จ |
5 | isUnderline แฟล็กที่ระบุว่าจำเป็นต้องมีการตกแต่งข้อความขีดเส้นใต้หรือไม่ ค่าเริ่มต้นเป็นเท็จ |
6 | isStrikeThrough แฟล็กที่ระบุว่าจำเป็นต้องมีการตกแต่งข้อความขีดทับหรือไม่ ค่าเริ่มต้นเป็นเท็จ |
7 | pdfFontName ชื่อของแบบอักษร PDF ที่เทียบเท่าที่ไลบรารี iText ต้องการเมื่อส่งออกเอกสารเป็นรูปแบบ PDF |
8 | pdfEncoding การเข้ารหัสอักขระ PDF ที่เทียบเท่ากันซึ่งจำเป็นสำหรับไลบรารี iText |
9 | isPdfEmbedded แฟล็กที่ระบุว่าควรฝังฟอนต์ลงในเอกสารหรือไม่ ค่าเริ่มต้นเป็นเท็จ หากตั้งค่าเป็นจริงจะช่วยให้ดูเอกสาร PDF ได้โดยไม่มีปัญหา |
ประเภทตัวอักษร
ในแบบอักษร JasperReports สามารถแบ่งประเภทเป็น -
Logical Fonts- แบบอักษรห้าแบบซึ่งได้รับการยอมรับจากแพลตฟอร์ม Java ตั้งแต่เวอร์ชัน 1.0 เรียกว่าแบบอักษรแบบลอจิคัล เหล่านี้คือ -Serif, SansSerif, Monospaced, Dialog, and DialogInput. ฟอนต์ตรรกะเหล่านี้ไม่ใช่ไลบรารีฟอนต์จริงที่ติดตั้งที่ใดก็ได้บนระบบ เป็นเพียงชื่อชนิดฟอนต์ที่รันไทม์ Java รู้จัก สิ่งเหล่านี้ต้องถูกแมปกับฟอนต์ฟิสิคัลบางตัวที่ติดตั้งบนระบบ
Physical Fonts- ฟอนต์เหล่านี้คือไลบรารีฟอนต์จริงซึ่งประกอบด้วยฟอนต์ TrueType หรือ PostScript Type 1 ฟอนต์ทางกายภาพอาจเป็น Arial, Time, Helvetica, Courier หรือฟอนต์อื่น ๆ รวมถึงฟอนต์สากล
Font Extensions- ไลบรารี JasperReports สามารถใช้ฟอนต์ที่ลงทะเบียนได้ทันทีที่รันไทม์ผ่านการรองรับส่วนขยายฟอนต์ในตัว รายการตระกูลฟอนต์สามารถใช้ได้กับ JasperReports โดยใช้นามสกุลฟอนต์ สิ่งเหล่านี้สร้างขึ้นจากหน้าตาแบบอักษรที่ดูคล้ายกันและรองรับภาษาที่เฉพาะเจาะจง
ตามที่อธิบายไว้ในตารางด้านบนเราจำเป็นต้องระบุในแอตทริบิวต์fontNameชื่อของแบบอักษรทางกายภาพชื่อของแบบอักษรตรรกะหรือชื่อของตระกูลแบบอักษรจากส่วนขยายแบบอักษร JasperReports ที่ลงทะเบียน
ชื่อแบบอักษร PDF
ไลบรารี JasperReports ใช้ไลบรารี iText เมื่อส่งออกรายงานเป็น PDF (Portable Document Format) ไฟล์ PDF สามารถดูได้บนแพลตฟอร์มต่างๆและจะมีลักษณะเหมือนกันเสมอ นี่เป็นบางส่วนเนื่องจากในรูปแบบนี้มีวิธีพิเศษในการจัดการกับฟอนต์ แอตทริบิวต์fontNameไม่มีประโยชน์เมื่อส่งออกเป็น PDF แอตทริบิวต์pdfFontNameมีอยู่ที่เราต้องระบุการตั้งค่าแบบอักษร
ไลบรารี iText รู้วิธีจัดการกับฟอนต์ในตัวและไฟล์ TTF และจดจำชื่อฟอนต์ในตัวต่อไปนี้ -
- Courier
- Courier-Bold
- Courier-BoldOblique
- Courier-Oblique
- Helvetica
- Helvetica-Bold
- Helvetica-BoldOblique
- Helvetica-Oblique
- Symbol
- Times-Roman
- Times-Bold
- Times-BoldItalic
- Times-Italic
- ZapfDingbats
ตามข้อกำหนดเบื้องต้นของไลบรารี iText ในการทำงานกับฟอนต์เราจำเป็นต้องระบุสิ่งใดสิ่งหนึ่งต่อไปนี้เป็นชื่อฟอนต์ -
ชื่อแบบอักษรในตัวจากรายการด้านบน
ชื่อของไฟล์ TTF (True Type Font) ซึ่งสามารถค้นหาได้บนดิสก์
ชื่อจริงของแบบอักษรโดยมีเงื่อนไขว่าไฟล์ TTF ที่มีแบบอักษรได้รับการลงทะเบียนก่อนหน้านี้กับ iText หรือมีการกำหนดนามแฝงเมื่อลงทะเบียนแบบอักษร
ตามข้อกำหนดเบื้องต้นข้างต้นแอตทริบิวต์pdfFontNameสามารถมีค่าใดค่าหนึ่งต่อไปนี้ -
ชื่อของแบบอักษร PDF ในตัวจากรายการด้านบน
ชื่อของไฟล์ TTF ที่สามารถอยู่บนดิสก์ขณะรันไทม์เมื่อส่งออกเป็น PDF
ชื่อจริงของแบบอักษรที่ลงทะเบียน
คำต่อท้ายของคีย์ (ส่วนหลังnet.sf.jasperreports.export.pdf.font ) สำหรับฟอนต์ที่ลงทะเบียนด้วย iText เป็นไฟล์ฟอนต์
แบบอักษรเริ่มต้นและการสืบทอด
องค์ประกอบข้อความแต่ละรายการจะสืบทอดแอตทริบิวต์แบบอักษรและสไตล์จากองค์ประกอบหลักซึ่งจะสืบทอดแอตทริบิวต์เหล่านี้จากพาเรนต์ หากไม่มีการกำหนดสไตล์และ / หรือฟอนต์สำหรับองค์ประกอบจะใช้สไตล์เริ่มต้น (และ / หรือฟอนต์ - แต่ตอนนี้เลิกใช้แล้ว) ที่ประกาศในอิลิเมนต์ราก <jasperReport /> จะถูกนำไปใช้
การกำหนดสไตล์หรือฟอนต์เริ่มต้นใน JasperReports ไม่บังคับ หากไม่มีการกำหนดฟอนต์สำหรับองค์ประกอบที่กำหนดเอ็นจินจะค้นหาแอตทริบิวต์ฟอนต์ที่สืบทอดมาหรือหากไม่พบแอ็ตทริบิวต์ด้วยวิธีนี้ก็จะค้นหาคุณสมบัติnet.sf.jasperreports.default.font.nameใน/ src / default.jasperreports.propertiesไฟล์ ค่าของมันกำหนดชื่อของตระกูลฟอนต์ที่จะใช้เมื่อคุณสมบัติฟอนต์ไม่ได้กำหนดไว้อย่างชัดเจนสำหรับองค์ประกอบข้อความหรือสืบทอดมาจากพาเรนต์
คุณสมบัติฟอนต์เริ่มต้นหลักและค่าที่กำหนดในไฟล์/src/default.jasperreports.propertiesอยู่ในตารางด้านล่าง -
ทรัพย์สิน | คำอธิบาย |
---|---|
net.sf.jasperreports.default.font.name = SansSerif | ชื่อแบบอักษรเริ่มต้น |
net.sf.jasperreports.default.font.size = 10 | ขนาดตัวอักษรเริ่มต้น |
net.sf.jasperreports.default.pdf.font.name = Helvetica | แบบอักษร PDF เริ่มต้น |
net.sf.jasperreports.default.pdf.encoding = Cp1252 | การเข้ารหัสอักขระ PDF เริ่มต้น |
net.sf.jasperreports.default.pdf.embedded = false | โดยค่าเริ่มต้นจะไม่ฝังฟอนต์ PDF |
ตัวอย่าง
เพื่อสาธิตการใช้ฟอนต์และแอ็ตทริบิวต์แบบอักษรเพื่อให้ได้ลักษณะเฉพาะของข้อความเรามาเขียนเทมเพลตรายงานใหม่ (jasper_report_template.jrxml) เนื้อหาของ JRXML มีดังต่อไปนี้ บันทึกลงในไดเร็กทอรี C: \ tools \ jasperreports-5.0.1 \ test ที่นี่เราจะแสดงข้อความในชื่อของรายงานในรูปแบบอักษรต่างๆ
<?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>
รหัส java สำหรับกรอกและสร้างรายงานมีดังที่ระบุด้านล่าง มาบันทึกไฟล์นี้กันJasperFontsReportFill.java ไปยังไดเร็กทอรี 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();
}
}
}
ที่นี่เราจะใช้ตัวอย่างของJREmptyDataSourceเมื่อกรอกรายงานเพื่อจำลองแหล่งข้อมูลที่มีระเบียนหนึ่งในนั้น แต่มีเขตข้อมูลทั้งหมดเป็นโมฆะ
การสร้างรายงาน
เราจะรวบรวมและเรียกใช้ไฟล์ข้างต้นโดยใช้กระบวนการสร้าง ANT ปกติของเรา เนื้อหาของไฟล์ build.xml (บันทึกภายใต้ไดเร็กทอรี C: \ tools \ jasperreports-5.0.1 \ test) มีดังต่อไปนี้
ไฟล์นำเข้า - baseBuild.xml ถูกเลือกจากบทEnvironment Setupและควรอยู่ในไดเร็กทอรีเดียวกับ 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>
ต่อไปให้เปิดหน้าต่างบรรทัดคำสั่งและไปที่ไดเร็กทอรีที่วาง build.xml สุดท้ายรันคำสั่งant -Dmain-class=com.tutorialspoint.JasperFontsReportFill (viewFullReport เป็นเป้าหมายเริ่มต้น) เป็น -
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
จากการรวบรวมข้างต้นหน้าต่าง JasperViewer จะเปิดขึ้นตามที่แสดงในหน้าจอด้านล่าง -
ที่นี่เราจะเห็นว่าข้อความ "ยินดีต้อนรับสู่ TutorialsPoint" แสดงในรูปแบบอักษรที่แตกต่างกัน