首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测Jasper报告中的溢出?

问如何检测Jasper报告中的溢出?
EN

Stack Overflow用户
提问于 2017-01-10 00:48:14
回答 1查看 273关注 0票数 1

如何自动检测Jasper报表中的所有溢出/截断文本?

我的用例:我有一个多语言报告。当一些翻译更改时,我希望确保下一个(可能更长的文本)不会被截断,而不必关注每个更改。

检查应该适用于所有元素,即使是那些增长的元素。假设我有一个文本框,它试图增长并延伸到页面边框之外。也许更好的描述是:我想知道引擎何时向页面添加用户看不到的文本,无论是什么原因。

EN

回答 1

Stack Overflow用户

发布于 2017-01-25 17:42:16

我找到了一个解决办法:当文本溢出时,JasperReports会在PDF中忽略它(而不是依赖于裁剪)。

您可以使用像PDFBox这样的框架从页面获取文本。在单元测试中,您可以检查全文是否可见。

这可以很好地处理静态文本。

我已经创建了一个gist with some demo code。

动态文本比较困难,因为它们可能会在生产中溢出。您可以使用相同的方法来检查文本是否在页面上保持不变,但速度有点慢。

对于单行文本,一个更快的解决方案是使用平均字符宽度( PDFont class有一个getAverageFontWidth()方法。

可放入框中的平均字符数为boxWidth / averageCharWidth。将字符串长度与此值进行比较。如果它更小,那么你很可能是安全的。如果它更长,你至少可以用这个字符串记录一个警告。

一段时间后,您可以收集所有这些日志,并尝试找出一种更好的方法来确定哪些文本适合哪些不适合。

理想的解决方案是一个应用程序接口,它将字体、样式和文本传递给JasperReports并取回宽度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41552879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档