最近一直在学习jasperreports,看过 jasperreport ultimate guide 1.2.5后,会了一般的使用,不过,还是碰到不少问题
1)在detail中画线,大家应该都用过,不过会出现下图中的问题
通过阅读代码,找到了一个解决办法
JRHorizontalFiller,水平添加实现
1)修改fillDetail
java 代码
- private void fillDetail() throws JRException {
- JRFillBand tmp = detail;
- if (log.isDebugEnabled() && !detail.isEmpty()) {
- log.debug("Fill " + fillerId + ": detail");
- }
-
- if (!detail.isPrintWhenExpressionNull()) {
- calculator.estimateVariables();
- detail.evaluatePrintWhenExpression(JRExpression.EVALUATION_ESTIMATED);
- }
-
- if (detail.isToPrint()) {
- while (
- (columnIndex == columnCount - 1 || isNewGroup)
- && detail.getHeight() > columnFooterOffsetY - offsetY
- ) {判断什么时间断页
-
- fillDetailBlankBand(tmp, JRExpression.EVALUATION_DEFAULT, false, columnFooterOffsetY - offsetY,offsetY);
- byte evalPrevPage = (isNewGroup ? JRExpression.EVALUATION_DEFAULT : JRExpression.EVALUATION_OLD);
-
- fillPageBreak(
- false,
- evalPrevPage,
- JRExpression.EVALUATION_DEFAULT,
- true
- );
- }
- }
-
- scriptlet.callBeforeDetailEval();
- calculator.calculateVariables();
- scriptlet.callAfterDetailEval();
-
- if (!detail.isPrintWhenExpressionNull()) {
- detail.evaluatePrintWhenExpression(JRExpression.EVALUATION_DEFAULT);
- }
-
- if (detail.isToPrint()) {
- if (
- offsetX == lastDetailOffsetX
- && offsetY == lastDetailOffsetY
- ) {
- if (columnIndex == columnCount - 1) {
- setFirstColumn();
- } else {
- columnIndex++;
- offsetX += columnWidth + columnSpacing;
- offsetY -= detail.getHeight();
-
- setColumnNumberVariable();
- }
- }
-
- fillFixedBand(detail, JRExpression.EVALUATION_DEFAULT, false);
-
- lastDetailOffsetX = offsetX;
- lastDetailOffsetY = offsetY;
- }
-
- isNewPage = false;
- isNewColumn = false;
- isNewGroup = false;
- }
2)修改fillPageFooter
java 代码
- private void fillPageFooter(byte evaluation) throws JRException {
- JRFillBand crtPageFooter = getCurrentPageFooter();
-
- if (log.isDebugEnabled() && !crtPageFooter.isEmpty()) {
- log.debug("Fill " + fillerId + ": " + (isLastPageFooter ? "last " : "") + "page footer");
- }
-
- offsetX = leftMargin;
-
- if (!isSubreport() && !fillContext.isIgnorePagination()) {
- offsetY = pageHeight - crtPageFooter.getHeight() - bottomMargin;
- }
-
- crtPageFooter.evaluatePrintWhenExpression(evaluation);
-
- if (crtPageFooter.isToPrint()) {
-
- fillDetailBlankBand(detail, evaluation, true, columnFooterOffsetY - lastDetailOffsetY,lastDetailOffsetY);
- fillFixedBand(crtPageFooter, evaluation);
- }
- }
3)添加
fillDetailBlankBand
java 代码
- protected void fillDetailBlankBand(JRFillBand band, byte evaluation, boolean allowShrinking, int stretchHeight, int _offsetY) throws JRException {
- JRPrintBand printBand = band.fill(stretchHeight);
- printBand.setHeight(stretchHeight);
- JRPrintElement printElement = null;
- JRElement[] fillElements = band.getElements();
- for (int i = 0; i < fillElements.length; i++) {
- JRFillElement fillElement = (JRFillElement) fillElements[i];
- if (fillElement instanceof JRFillTextField) {
- JRFillTextField fillFieldElement = (JRFillTextField) fillElement;
- fillFieldElement.rewind();
- fillFieldElement.setRawText("");
- printElement = fillFieldElement.fill();
- printElement.setHeight(stretchHeight);
- printElement.setX(printElement.getX() + offsetX);
- printElement.setY(printElement.getY() + _offsetY);
- printPage.addElement(printElement);
-
- }
- }
- resolveBandBoundElements(band, evaluation);
- }
通过以上步骤就解决了这个问题
- 大小: 37.2 KB
- 描述: 修改后填充的的图片
- 大小: 37.9 KB
分享到:
相关推荐
JasperReports是一款强大的开源报表工具,广泛应用于Java应用程序中,用于生成复杂的数据报告。这个资源包“jasperreports实例+中文文档+资料”提供了全面的学习材料,包括实例、文档以及相关资料,帮助开发者深入...
标题中的“解决jasperReports中文无法显示问题.rar”指出,这是一个关于jasperReports库在处理中文字符时遇到问题,并提供了解决方案的压缩文件。jasperReports是一个强大的开源报告生成库,广泛用于Java应用程序中...
4. **表达式和变量**:理解JasperReports中的表达式语言JasperReports Expression Language (JEXL),以及如何使用变量和计算字段来处理动态数据。 5. ** JasperReports API**:了解JasperReports的核心类,如...
中文支持的完美解决, 1、通过设置默认样式的方式不能解决table和subReport中的中文显示。...2、jasperreports-fonts-6.9.0.jar增加了【宋体】的支持。 3、在SpringMvc中测试导出PDF没有问题,包括Table和subReport。
标题“jasperreports-fonts.zip”暗示这是一份与JasperReports相关的字体资源包,而描述中的“jasperreport支持中文jar包”则指出这个压缩文件包含的是为了使JasperReports能够正确显示中文字符的特殊组件。...
将JasperReports与Struts2整合,可以帮助我们在Web应用中轻松创建复杂的报表。 首先,JasperReports是用Java编写的开源报表库,能够设计和生成多种格式的报表,如PDF、HTML、Excel、CSV等。它的强大之处在于能够...
jasperreports,jasperreports,jasperreports,jasperreports,jasperreports,jasperreports,jasperreports,jasperreports,jasperreports
### JasperReports与iReport中文教程知识点总结 #### 1. JasperReport与iReport简介 - **JasperReport**: 开源的报表打印组件,适合于Web应用程序与Java Application的报表打印需求,可在sf.net获取,截至文章撰写...
### JasperReports+iReport在Eclipse中的使用详解 #### 一、JasperReports简介与特性 JasperReports是一款开源的报表工具,它能够根据预定义的模板生成多种格式的报表,如PDF、HTML、XML等,并且支持CSV、XLS、RTF...
1. **JasperReports基础**:首先,你需要了解JasperReports的基本概念,包括报表设计、数据源、字段、细节段、汇总等元素。这些是构建任何报表的基础。 2. **iReport集成**:JasperReports通常与iReport(报表设计...
`JasperReport_JasperFillManager_fillReportToFile.mht`可能详细解释了`JasperFillManager.fillReportToFile()`方法,它是JasperReports库中用于将填充后的报表保存到文件的重要方法,这对于批量生成报表或后续处理...
jasperreports-3.5.3.jar jasperreports-3.5.3.jar jasperreports-3.5.3.jar
iReport和JasperReports是两个在Java开发领域中广泛使用的报表工具,主要用于设计和生成复杂的业务报告。这个“iReport+Jasperreports中文教程集合”提供了丰富的学习资源,旨在帮助初学者快速掌握这两个工具的使用...
在JasperReports中,用户可以利用JasperDesign进行报表设计,然后使用JasperFillManager填充数据,最后通过JasperExportManager导出报表。 二、Applet技术 Applet是Java小程序,可以在Web浏览器中运行。在...
在JasperReports中,Groovy脚本可用于报表的计算、过滤数据或者自定义报表行为。 3. **gwt-benchmark-viewer-1.5.1.jar**:Google Web Toolkit (GWT) 的组件,用于展示性能基准测试结果。虽然GWT主要用于开发客户端...
JasperReports是一款功能强大的开源报表工具,尤其在Java环境中被广泛应用。本文将详细探讨JasperReports 4.7.0版本的核心特性、设计原理及其实现方法,旨在帮助开发者深入理解并充分利用这一强大的报告生成库。 1....