我想在jasper report 5.1版导出的PDF报告中显示不同的字体(古吉拉特邦印第安语)。
我尝试的内容:运行工具后,在位置下方打开步骤1:
工具-
net.sf.jasperreports.default.font.name=Arial Unicode MS - the default font name.
net.sf.jasperreports.default.font.size=10 - the default font size.
net.sf.jasperreports.default.pdf.font.name=Identity-H - the default PDF font.
net.sf.jasperreports.default.pdf.encoding=UTF-8 - the default PDF character encoding.
net.sf.jasperreports.default.pdf.embedded=true - by default PDF fonts are not embedded
安装了字体“Arial Unicode MS”,并创建了jar文件。JARPER报告的类路径中存在Jar文件。
链接如下:1)字体2)示例字体
第二步:irfonts。xml
默认情况下,jasper报告给出了我将其更改为的此文件中的其他字体。
<fontFamily name="Arial Unicode MS">
<normal>net/sf/jasperreports/fonts/dejavu/ArialUnicodeMS.ttf</normal>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
步骤3:
我得到的结果是:હીપ્સ 我真正想要的是:હિપ્સ
花了一段时间后,我才知道,当你在Jasper报表的模板中呈现页面时,字体会根据需要工作,但当你将其导出为pdf时,所有字体都会通过“itext pdf引擎”更改原因。
现在,窍门是itext没有我当前使用的字体。
我有什么方法可以做到这一点吗?
注意:它不是使用Java创建的。我是一名Oracle数据库开发人员,因此只使用工具创建,并使用工具边界打印。
示例代码:
<textField>
<reportElement x="111" y="26" width="100" height="20" uuid="5a471a16-de7b-4f55-9c9f-b01d37938b9f"/>
<textElement>
<font fontName="Arial Unicode MS" pdfEncoding="Identity-H" isPdfEmbedded="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{my_column_values}]]></textFieldExpression>
堆栈溢出中也存在一些类似的问题,但它们都使用java来调用和打印。
所以,我可以更改itext库或任何其他解决方法吗。我是如何创建的:
1)贾斯珀报告
2) 贾斯珀
我创建了一个新问题,只与itext相关,由@AmedeVanGasse建议,我将在这篇文章中展示Alexey Subach的答案如何在jasper报告中实现。
注意:Alexy Subach指出“实现非常糟糕,您无法期望获得正确的结果”
添加到classpath itext5库(注意,最新的jasper报告使用itext2,两者都需要),并将古吉拉特邦分类定义为变量,然后在每次需要输出时处理文本。
实例
<?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="FontTest" columnCount="5" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="111" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="2347c131-1884-430a-b77f-59f08f896c8a">
<variable name="g" class="com.itextpdf.text.pdf.languages.GujaratiLigaturizer">
<initialValueExpression><![CDATA[new com.itextpdf.text.pdf.languages.GujaratiLigaturizer()]]></initialValueExpression>
</variable>
<title>
<band height="25">
<textField pattern="">
<reportElement x="0" y="0" width="200" height="25" uuid="ee49d149-394b-4ac6-a0a2-6d207b0c8d89"/>
<textElement>
<font fontName="Arial Unicode MS" size="14"/>
</textElement>
<textFieldExpression><![CDATA[$V{g}.process("\u0ab9\u0abf\u0aaa\u0acd\u0ab8")]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
重要提示:只有pdf导出才是正确的!
pdf结果
在通过java导出之前,如果需要生成pdf,请在导出之前切换JasperPrint对象中的文本
JasperPrint print = JasperFillManager.fillReport(report, new HashMap<String, Object>(), theDatasource);
IndicLigaturizer g = new GujaratiLigaturizer();
for (JRPrintPage page : print.getPages()) {
for (JRPrintElement element : page.getElements()) {
if (element instanceof JRTemplatePrintText){
JRTemplatePrintText text = (JRTemplatePrintText)element;
text.setText(g.process(text.getText()));
}
}
}
请尝试JasperReports 6.2.0或更新版本。它附带了对Indi脚本的PDF支持(通过将AWT文本布局传输到PDF来实现)。
JasperReports发行版中的Unicode报告示例(在demo/samples/Unicode下)显示了几种印度文脚本中的文本,包括古吉拉特文(使用谷歌Noto字体)。
这是关于如何将古吉拉特邦印第安语字体导出为pdf的问题的后续讨论@iText的QA工程师amedee van gasse让我向相关mcve发布一个针对iText的问题。 为什么此unicode序列未正确呈现? 应如下所示进行渲染: હિપ્સ , 还使用unicode转换器进行了测试 但是,此代码(示例改编自iText:第11章:选择正确的字体) 生成此结果: 看起来不同于 હિપ્સ 我用ite
我正在为jasper reports使用I-report 5.5.0。我需要将印地语文本导出为PDF格式,但印地语部分正在转换为 。 我已经使用了字体扩展,但没有帮助: 字体名称:“lohit Devanagari” PDF嵌入:选中 PDF编码:Identity-H 我也尝试过其他印地语字体,但到目前为止没有任何效果。。
我在Swift中遇到了一个印地语数字集整数值的问题 这是关于我们如何将印地语转换成英语的任意数值。 想知道如何将一种语言的数字转换成另一种语言的数字吗 例如:试图将印地语数字转换为阿拉伯语 这是我在操场上试过的代码: 这是它仅以英文显示的输出 我已经搜索了这个问题,但没有找到这种具体的解决方案,所以发布了一个新的问题。 注意:不寻找任何静态转换扩展或此类函数。 编辑:我不想要这种解决方案 在Swi
我的问题是如何在android中的自定义listview中更改印地语字体。我正在使用此代码Typeface hIndiFont=Typeface.createFromAsset(getAsset(),"fonts/DroidHindi.ttf "); // 将menuItems添加到ListView 请帮帮我。提前谢谢!!!!!!!!! 我正在重写getView方法,但无法工作。请帮帮我。
我正在尝试从.jasper文件生成pdf报告到使用struts框架的基于web的java应用程序中。但是pdf报表中的字体显示不正确(这里是打印屏幕),而在预览时,它可以正常工作,或者我们可以将相同的报表导出为其他格式,如docx,html格式,它可以正常工作(这里是打印屏幕)
问题内容: 尝试使用iText将越南文文档导出为PDF时遇到问题。我将越南语单词放在.xml文件中,像这样 然后让Java从xml文件中获取短语,然后使用以下方法将其转换为Unicode: 之后,将String导出为PDF-编码为UTF-8。但是程序无法显示越南语字符“ \ u1ED5”和“ \ u1EE9”。输出变为“ T chc tham gia”。能否请您告诉我如何解决此问题?谢谢 :) 问