如何解决问:JasperReport (Jaspersoft Studio 6.17.0) 文本字段重复字符
我有一个关于 JasperReports 的非常奇怪的问题。 我制作了一个测试 PDF 文件,因为我们必须将我们的报告工具交换到 JasperReports,并且我尝试只使用静态文本和另一个包含一个 java.Math.BigDecimal 的动态文本字段(尝试使用另一个 Integer变量,虽然)。
问题如下:
静态文本字段(应包含“troll”,是的...创意)和动态文本字段都打印在最终导出的 PDF 中....尽管此文本字段的第一个字符和长度非常好,但是第一个字符之后的所有内容都用相同的字符填充...意味着:它会打印“ttttt”而不是“troll”,而不是 30000.00-39999.99 之间的任何数字(甚至小数)打印为“33333333”(是的,即使是点也会被替换为“3”)。
这是test-PDF-jrxml的源代码:
<!-- Created with Jaspersoft Studio version 6.17.0.final using JasperReports Library version 6.17.0-6d93193241dd8cc42629e188b94f9e0bc5722efd -->
<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="Blank_A4" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="7d73e29c-3d01-4b41-9f1e-a969f0f9e3fc">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="cases" class="java.lang.Integer"/>
<field name="sum" class="java.math.BigDecimal"/>
<background>
<band splitType="Stretch"/>
</background>
<pageHeader>
<band height="66">
<staticText>
<reportElement x="206" y="36" width="100" height="30" uuid="0855f093-7bf7-44d3-986b-2cffbca10f96"/>
<text><![CDATA[troll]]></text>
</staticText>
</band>
</pageHeader>
<detail>
<band height="139" splitType="Stretch"/>
</detail>
<summary>
<band height="42" splitType="Stretch">
<textField>
<reportElement isPrintRepeatedValues="false" x="100" y="1" width="271" height="30" uuid="778cb21b-f90f-486d-82cc-91fce9edfc3c"/>
<textFieldExpression><![CDATA[$F{sum}.floatValue(); $F{cases}.intValue();]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>
private void jasperWriteList(final Document pDoc) {
PaymentClass payment= pDoc.getGrpHdr().getPayment();
String path = randomPathDummyHere;
BigDecimal sum = BigDecimal.ZERO;
int cases= 0;
try {
//Compiles jrxml-draft for sum list
JasperReport jasperReport = JasperCompileManager.compileReport("Blank_A4.jrxml");
//Parsing from original
for (PaymentCase pCase : pDoc.getCases().getCase()){
cases++;
sum = sum.add(pCase.getSum());
}
//DataSource and stuff
SumListJRData slData = new SumListJRData(sum,cases);
JRDataSource dataSource = new JRBeanCollectionDataSource(Collections.singletonList(slData));
Map<String,Object> params = new HashMap<>();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,params,(JRDataSource)dataSource);
//WE SUSPECT THE ERROR IN THIS VERY STEP,SINCE DEBUG HAS SHOWN PERFECTLY FINE VARIABLES TILL HERE
JasperExportManager.exportReportToPdfFile(jasperPrint,path);
} catch (JRException e) {
// Todo Auto-generated catch block
e.printstacktrace();
}
}
我们试图调试这个,你可以在代码的注释中看到,我们怀疑错误在哪里。但是我们不得不比在 minecrafts Nether 中更深入地挖掘源代码,但仍然无法找到错误。也许这是 Jasper 包本身的一个错误?还是我们在某个地方做错了什么?
我们的技术栈是:
Jaspersoft Studio 6.17.0
Java JDK 1.8.0_292
Eclipse Spring 工具套件 4 (4.5.0.RELEASE)
提前致谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。