我正在使用i-report 5.5.0获取jasper报告。我需要将印地语文本导出为PDF格式,但印地语部分已转换为???????
。
我已经使用了字体扩展但它没有帮助:
字体名称:" lohit Devanagari"
PDF嵌入式:已检查
PDF 编码:Identity-H
我也尝试了其他印地语字体但到目前为止没有任何效果......
<textField>
<reportElement x="111" y="26" width="100" height="20" uuid="5a471a16-de7b-4f55-9c9f-b01d37938b9f"/>
<textElement>
<font fontName="Lohit Devanagari" pdfEncoding="Identity-H" isPdfEmbedded="false"/>
</textElement>
<textFieldExpression><![CDATA[$F{DISTRICT_NAME}]]></textFieldExpression>
</textField>
答案 0 :(得分:0)
正确的方法是使用font-extensions。 pdfEncoding="Identity-H"
已弃用。
首先清除此checklist to render font in pdf:
.tff
是否支持(OpenType),字体实际上呈现字符。并非所有字体都呈现
UTF-8
一旦你创建了正确的字体扩展名并且它无法正常工作,这可能是你的问题..
Identity-H似乎没问题
嵌入您的字体(否则如果您在计算机上运行它可能 不适用于其他人),请在jrxml中注明
isPdfEmbedded=false
,删除标记,然后在字体扩展名中选择true
或将标记设置为true
。
现在只需正确生成 font-extension 并将其添加到classpath
,
编辑:用户通过字体后
字体Krutidev_011.TTF
不是有效的ttf字体,因为很遗憾,根据Apple的标准和微软的标准不同(我的猜测你的字体是苹果ttf而不是开放式的ttf)。
Caused by: net.sf.jasperreports.engine.JRRuntimeException: java.awt.FontFormatException: java.nio.BufferUnderflowException
at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:178)
我尝试download来自网络的有效ttf字体 Lohit Devanagari ,并将其添加为字体扩展名,fontName="Lohit Devanagari"
这是我的结果:
渲染字体但结果可能有 Ligaturizer问题,有关如何解决这些问题,请参阅Why is the Gujarati-Indian text not rendered correctly using Arial Unicode MS?
如果您想尝试这是我使用的font extension jar for Lohit Devanagari字体扩展程序,请记得设置fontName="Lohit Devanagari"
答案 1 :(得分:0)
我用gargi.ttf字体解决了同样的问题。 download here 使用此配置
typeof array[index] === 'undefined'
答案 2 :(得分:0)
这对我有用
IndicLigaturizer hindi = new DevanagariLigaturizer();
String result = hindi.process(string);
答案 3 :(得分:0)
Jasper 报告:- 您可以将 Arial Unicode MS 用于印地语,并在 java 构建路径中包含相同的字体 jar