我正在尝试使用jasper报表生成多语言PDF,我创建了针对不同语言的属性文件,并使用资源包检索了标签,但是生成的PDF无法正确显示俄语字符 对于Jrxml文件,我使用编码UTF-8 这是我将代码包传递给报告的代码:
ResourceBundle bundle = ResourceBundle.getBundle("labels/russia/labels", new Locale("ru", "RU"));
paramMap.put("REPORT_RESOURCE_BUNDLE", bundle);
principalJsonDataSource = new JsonDataSource(inputAsStream);
principalReport = JasperCompileManager
.compileReport(context.getResource("classpath:jasper/russia/" + "russia" + ".jrxml").getInputStream());
principalReport.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL);
principalReport.setProperty(MaxPagesGovernor.PROPERTY_MAX_PAGES_ENABLED, Boolean.TRUE.toString());
principalReport.setProperty(MaxPagesGovernor.PROPERTY_MAX_PAGES, String.valueOf(50));
principalReport.setProperty("net.sf.jasperreports.default.pdf.encoding", "UTF-8");
principalReportPrinter = JasperFillManager.fillReport(principalReport, paramMap, principalJsonDataSource);
这是我的jrxml文件:
<?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="justName" pageWidth="842" pageHeight="1170" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="bf7f4e53-0f98-4a11-a8e2-91b1629156e5">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<property name="com.jaspersoft.studio.unit" value="pixel"/>
<import value="org.apache.commons.lang.StringUtils"/>
<style name="Base" isDefault="true" fontSize="8" pdfFontName="Courier" pdfEncoding="UTF-8" isPdfEmbedded="false"/>
<queryString language="JSON">
<![CDATA[]]>
</queryString>
<background>
<band splitType="Stretch"/>
</background>
<detail>
<band height="201" splitType="Stretch">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<textField>
<reportElement style="Base" positionType="Float" x="5" y="26" width="210" height="17" isRemoveLineWhenBlank="true" uuid="4e3fb833-2a8a-4178-89df-b0c229c6bc8f"/>
<textElement>
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$R{message}]]></textFieldExpression>
...
答案 0 :(得分:0)
使用支持所需字符的字体,可能将该字体嵌入PDF。
您可以尝试从Courier
切换为Courier New
字体。根据{{3}},它支持西里尔字母。