标签:ireport clob java blob jasper-reports
我需要在iReport中的文本字段中显示长度超过4000个字符的CLOB字段.我正在使用iReport版本5.5.0,我尝试将CLOB转换为InputStream,但它不起作用,我得到的是:
java.io.ByteArrayInputStream@43842a66
我尝试了getSubString(long,int)但它只适用于小于4000个字符的字符串. stringValue()和toString()也不起作用.
谢谢你的帮助.
编辑:
Clob.getSubString(long,int)方法在后面的测试中运行良好,我不知道为什么之前没有用.所以我用过:
$F{FIELD}.getSubString( (long)1, (int)$F{FIELD}.length() )
最终.它可能不是最好的选择,但我认为字符串的最大长度(2147483647)对于该字段来说已经足够了.
解决方法:
我有同样的问题,我找到了以下解决方案.
第一
一个是在Textfield表达式中放置以下语句.捕获到这个字段应该没有回车和换行符来显示完整的字段值.我通过SQL查询填充该字段.
new BufferedReader(new InputStreamReader($F{FIELD_NAME})).readLine()
第二
在类中创建一个方法,其中InputStream转换为ByteArrayOutputStream并将其转换为String,然后在传入CLOB值的Textfield表达式中调用此方法.
在这两种情况下,该字段都应声明为java.io.InputStream.
更多details.
标签:ireport,clob,java,blob,jasper-reports 来源: https://codeday.me/bug/20190830/1771708.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。