Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自用户的长文本输入和PDF生成_Java_Pdf Generation_Jasper Reports_Validation_Ireport - Fatal编程技术网

Java 来自用户的长文本输入和PDF生成

Java 来自用户的长文本输入和PDF生成,java,pdf-generation,jasper-reports,validation,ireport,Java,Pdf Generation,Jasper Reports,Validation,Ireport,我构建了一个web应用程序,它可以看作是一个过于复杂的应用程序表单。存在一组具有给定字符限制的文本区域。表单提交后会发生各种事情,其中之一就是生成PDF 文本将从数据库中查询并插入在iReports中创建的PDF模板中。这很好,但主要的问题是文本过多 根据“平均”文本设置最大字符数。但有时人们更喜欢用大写字母或添加大量换行符来格式化文本。这会导致用户的文本溢出PDF中给定的空间。不幸的是PDF文件必须看起来像一个真正的申请表,所以我不能允许无限的空间 你用了什么方法来解决这个问题 清理/限制用

我构建了一个web应用程序,它可以看作是一个过于复杂的应用程序表单。存在一组具有给定字符限制的文本区域。表单提交后会发生各种事情,其中之一就是生成PDF

文本将从数据库中查询并插入在iReports中创建的PDF模板中。这很好,但主要的问题是文本过多

根据“平均”文本设置最大字符数。但有时人们更喜欢用大写字母或添加大量换行符来格式化文本。这会导致用户的文本溢出PDF中给定的空间。不幸的是PDF文件必须看起来像一个真正的申请表,所以我不能允许无限的空间

你用了什么方法来解决这个问题

  • 清理/限制用户输入
  • 基于字体度量计算文本的空间需求
  • 提供PDF的预览?(太糟糕了,提交后不允许用户更改其输入…)

理想情况下,根据指标计算需求。我不知道iReports是如何处理文本的,但使用iText,它会自己安排所有内容,您只需将数据作为流式文档呈现,因此我们不必担心文本溢出

但是,iReport可能不支持这一点,或者您可能需要使PDF布局适合某些范围。我会尝试清理输入(即:如果全部是大写、小写/句子大小写/适当大小写),去掉多余的空格。如果清理输入不能可靠地完成,或者人们仍在克服这一点,我也会限制它


作为最后手段,我会将PDF提交给用户进行授权。实际上,用户不应该被赋予更多的工作去做,而且他们无论如何也不会去做。

您可以控制生成PDF时使用的字体吗?如果是这样,我会在Monospace系列中寻找字体。这将为给定数量的字符提供一致的长度,而不考虑字数、大小写等。

您自己建议的问题解决方案都很好。可能要回答的最重要的问题是,当要在字段中显示的数据不合适时,您的PDF应该是什么样子?你还需要什么“完整答案”吗?当你知道这些问题的答案时,你的选择就会减少

例如,如果一个字段必须限制为1/2页,并且用户有时输入的文本超过1/2页,则您可以 1) 限制用户输入-提交时计算大小(如您所说使用字体度量),并拒绝提交,直到更正。这假设您可以合法地强制用户减少其数据输入。 2) 接受用户输入并在此报告的显示中截断。一些系统使用“…”表示数据已被截断,并可以提供超链接(甚至在PDF中)以获取更多信息

提供预览效果会非常好,但前提是用户善于检查和纠正,并且您的系统能够处理由此产生的额外负载