如何在 iReport 中添加符号 ₺(土耳其里拉)
How to add a symbol ₺ (Turkish Lira) in iReport
$P{DETAILPARAM} = " Tarihinden bu güne kadar <style isBold='true' pdfFontName='DejaVu Sans'>"+new java.text.DecimalFormat("#,##0.00").format($F{TOTAL_DEBT})+" ₺ </style> Borcunuz vardır."
Font = DejaVu Sans
这就像在参数中添加$P{DETAILPARAM}
。并导出PDF,但不显示"₺"这个符号。
我必须做什么?
Turkish Lira 具有 unicode U+20BA
并且由于它是相当新的 (2012),您需要确保您选择的字体支持此 unicode。
我尝试使用 dejavu-serif 字体,要了解如何正确下载和安装,请参阅:
结果
这是我的 jrxml 代码:
<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="FontTest" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="2347c131-1884-430a-b77f-59f08f896c8a">
<parameter name="number" class="java.lang.Double" isForPrompting="false">
<defaultValueExpression><![CDATA[new Double(1000.23)]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[]]>
</queryString>
<title>
<band height="25">
<textField>
<reportElement x="0" y="0" width="100" height="25" uuid="bc2ae040-f9af-4732-82fe-8fe8b71696bd"/>
<textElement>
<font fontName="DejaVu Serif" size="14"/>
</textElement>
<textFieldExpression><![CDATA["\u20BA"]]></textFieldExpression>
</textField>
<textField pattern="₺ #,##0.00">
<reportElement x="100" y="0" width="200" height="25" uuid="ee49d149-394b-4ac6-a0a2-6d207b0c8d89"/>
<textElement>
<font fontName="DejaVu Serif" size="14"/>
</textElement>
<textFieldExpression><![CDATA[$P{number}]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
一些设计笔记:
格式化数字时最好应用 pattern
,因为如果导出到例如 excel.
,这将保持正确 class
我无法实现模式 "\u20BA #,##0.00"
即使这直接在 java 中工作,我需要进一步调查这个,似乎 jasper 报告正在替换"\" 必须将字符直接放在模式中(即使不推荐这样做)。
导出PDF时注意三步
第一个,找到支持上述符号的自定义字体。
第二个,PDF字体名称应该为空
第三个,PDF Encoding应该是Identity-H
无需提及应选中“在 PDF 文档中嵌入此字体”。
$P{DETAILPARAM} = " Tarihinden bu güne kadar <style isBold='true' pdfFontName='DejaVu Sans'>"+new java.text.DecimalFormat("#,##0.00").format($F{TOTAL_DEBT})+" ₺ </style> Borcunuz vardır."
Font = DejaVu Sans
这就像在参数中添加$P{DETAILPARAM}
。并导出PDF,但不显示"₺"这个符号。
我必须做什么?
Turkish Lira 具有 unicode U+20BA
并且由于它是相当新的 (2012),您需要确保您选择的字体支持此 unicode。
我尝试使用 dejavu-serif 字体,要了解如何正确下载和安装,请参阅:
结果
这是我的 jrxml 代码:
<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="FontTest" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="2347c131-1884-430a-b77f-59f08f896c8a">
<parameter name="number" class="java.lang.Double" isForPrompting="false">
<defaultValueExpression><![CDATA[new Double(1000.23)]]></defaultValueExpression>
</parameter>
<queryString>
<![CDATA[]]>
</queryString>
<title>
<band height="25">
<textField>
<reportElement x="0" y="0" width="100" height="25" uuid="bc2ae040-f9af-4732-82fe-8fe8b71696bd"/>
<textElement>
<font fontName="DejaVu Serif" size="14"/>
</textElement>
<textFieldExpression><![CDATA["\u20BA"]]></textFieldExpression>
</textField>
<textField pattern="₺ #,##0.00">
<reportElement x="100" y="0" width="200" height="25" uuid="ee49d149-394b-4ac6-a0a2-6d207b0c8d89"/>
<textElement>
<font fontName="DejaVu Serif" size="14"/>
</textElement>
<textFieldExpression><![CDATA[$P{number}]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
一些设计笔记:
格式化数字时最好应用
,这将保持正确 classpattern
,因为如果导出到例如 excel.我无法实现模式
"\u20BA #,##0.00"
即使这直接在 java 中工作,我需要进一步调查这个,似乎 jasper 报告正在替换"\" 必须将字符直接放在模式中(即使不推荐这样做)。
导出PDF时注意三步
第一个,找到支持上述符号的自定义字体。 第二个,PDF字体名称应该为空 第三个,PDF Encoding应该是Identity-H
无需提及应选中“在 PDF 文档中嵌入此字体”。