レポートフォント
レポートにはテキスト要素が含まれており、それぞれに独自のフォント設定を設定できます。これらの設定は、<を使用して指定できますfont>タグは<textElement>タグで使用できます。レポートでは、いくつかのフォントを定義できます。定義すると、レポート全体で他のフォント定義のデフォルトまたは基本フォント設定として使用できます。
レポートフォント
レポートフォントは、レポートレベルで宣言されたフォント設定のコレクションです。レポートフォントは、テキスト要素のフォントプロパティを設定するときに、レポートテンプレート全体で再利用できます。
レポートフォントは非推奨になりました。ドキュメント自体で宣言されている<reportFont />要素は使用しないでください。代わりに<style />要素を使用してください。
フォント属性
以下の表は、<の主な属性をまとめたものです。font>要素-
S.NO | 属性と説明 |
---|---|
1 | fontName フォント名。物理フォント、論理フォント、または登録済みのJasperReportsフォント拡張機能のフォントファミリーの名前にすることができます。 |
2 | size ポイントで測定されたフォントのサイズ。デフォルトは10です。 |
3 | isBold 太字フォントが必要かどうかを指定するフラグ。デフォルトはfalseです。 |
4 | isItalic イタリックフォントが必要かどうかを指定するフラグ。デフォルトはfalseです。 |
5 | isUnderline 下線付きのテキスト装飾が必要かどうかを指定するフラグ。デフォルトはfalseです。 |
6 | isStrikeThrough 取り消し線のテキスト装飾が必要かどうかを指定するフラグ。デフォルトはfalseです。 |
7 | pdfFontName ドキュメントをPDF形式にエクスポートするときにiTextライブラリに必要な同等のPDFフォントの名前。 |
8 | pdfEncoding 同等のPDF文字エンコーディング。iTextライブラリにも必要です。 |
9 | isPdfEmbedded フォントをドキュメント自体に埋め込むかどうかを指定するフラグ。デフォルトはfalseです。trueに設定すると、PDFドキュメントを問題なく表示できます。 |
フォントタイプ
JasperReportsでは、フォントは次のように分類できます。
Logical Fonts−バージョン1.0以降Javaプラットフォームで認識されている5つのフォントタイプは、論理フォントと呼ばれます。これらは-Serif, SansSerif, Monospaced, Dialog, and DialogInput。これらの論理フォントは、システムのどこかにインストールされている実際のフォントライブラリではありません。これらは、Javaランタイムによって認識されるフォントタイプ名にすぎません。これらは、システムにインストールされている物理フォントにマップする必要があります。
Physical Fonts−これらのフォントは、たとえばTrueTypeまたはPostScript Type1フォントで構成される実際のフォントライブラリです。物理フォントは、Arial、Time、Helvetica、Courier、または国際フォントを含むその他のフォントです。
Font Extensions− JasperReportsライブラリは、フォント拡張機能の組み込みサポートを通じて、実行時にオンザフライで登録されたフォントを利用できます。フォントファミリーのリストは、フォント拡張機能を使用してJasperReportsで利用できるようにすることができます。これらは、同じように見えるフォントフェースで構成され、特定のロケールをサポートしています。
上記の表で説明されているように、属性fontNameで、物理フォントの名前、論理フォントの名前、または登録済みのJasperReportsフォント拡張からのフォントファミリーの名前を指定する必要があります。
PDFフォント名
JasperReportsライブラリは、レポートをPDF(Portable Document Format)にエクスポートするときに、iTextライブラリを使用します。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フォントの名前。
PDFにエクスポートするときに実行時にディスク上に配置できるTTFファイルの名前。
登録されているフォントの本名。
iTextにフォントファイルとして登録されているフォントのキーのサフィックス(net.sf.jasperreports.export.pdf.fontの後の部分)。
デフォルトのフォントと継承
各テキスト要素は、親要素からフォントとスタイルの属性を継承し、親要素はこれらの属性を親から継承します。要素にスタイルやフォントが定義されていない場合、<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のインスタンスを使用して、1つのレコードを含むが、すべてのフィールドがnullであるデータソースをシミュレートします。
レポートの生成
通常の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がデフォルトのターゲットです)as −
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ウィンドウが開きます-
ここでは、「WelcometoTutorialsPoint」というテキストがさまざまなフォント形式で表示されていることがわかります。