You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JasperReports生成含用户名的TXT文件时遇参数错误求助

解决JasperReports生成TXT文件时的JRRuntimeException错误

问题描述

使用Java代码结合JasperReports模板生成显示“Hello {用户名}”的TXT文件时,抛出JRRuntimeException,错误信息为:

Character height in pixels or page height in characters must be specified and must be greater than zero
(中文:必须指定像素单位的字符高度或字符单位的页面高度,且值必须大于0)

错误原因

JasperReports的文本导出器(JRTextExporter)要求必须配置垂直方向的排版参数:要么设置像素单位的字符高度,要么设置字符单位的页面高度,二者至少选其一。当前代码仅配置了页面宽度和字符宽度,缺少必要的垂直方向参数,导致导出器无法计算文本布局,触发异常。

解决方案

在SimpleTextReportConfiguration中添加字符高度或页面高度的配置,二者任选其一即可。推荐设置字符高度,与模板中的字体大小匹配,排版更准确。

修改后的核心代码

修改导出配置部分,添加字符高度设置:

// 导出JasperPrint到文本文件
Exporter exporter = new JRTextExporter();
exporter.setExporterInput(new SimpleExporterInput(print));
exporter.setExporterOutput(new SimpleWriterExporterOutput("output.txt"));
SimpleTextReportConfiguration configuration = new SimpleTextReportConfiguration();
configuration.setPageWidthInChars(80); // 设置页面宽度为80字符
configuration.setCharWidth((float)8); // 设置字符宽度为8像素
configuration.setCharHeight((float)24); // 添加字符高度配置,与模板字体大小匹配
exporter.setConfiguration(configuration);

exporter.exportReport();

注:这里设置字符高度为24像素,对应JRXML模板中<font size="24"/>的字体大小,确保文本内容能正确显示。

也可以选择设置页面高度(字符数)替代字符高度,示例:

configuration.setPageHeightInChars(30); // 设置页面高度为30字符

模板验证

你的JRXML模板配置正确,参数userName和文本字段的表达式均无问题,修改代码后即可成功生成包含“Hey, salma”内容的TXT文件。

内容的提问来源于stack exchange,提问作者Salma Aboumzrag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:05:52