我有一个表格,表格中可能包含 0 行或多行。问题是,如果有几行我想在内容溢出到下一页之前关闭第一页上的表格。然后为下一页上的其余行创建另一个表以及一个漂亮的标题和表标题。困难的部分是,因为字符有不同的宽度,而且我无法预测用户将输入什么,所以很难计算一行可以容纳多少个字符以及一页可以容纳多少行。此外,如果用户在某些行数据中键入某些内容,它会换行到第二行。当该行只有几行时,打印输出看起来很糟糕,因为底部有很多空白,所以我正在考虑添加空白行来填充它。但同样,我不会 不知道在溢出到下一页之前我需要填充多少行。有人对此有解决方案吗?
编辑:
对于那个很抱歉。为了更清楚地了解我在做什么,我使用 CF 和 HTML 创建了一个表单视图,它在视觉上模仿纸质发票。发票行项目可以通过 AJAX 动态添加。顶部有一堆信息要填写(公司名称、地址等),然后在中间有一个带有列标题的表格中的发票行,然后在它下面有更多信息需要填写,包括签名字段。此格式不能更改,因为它是必需的。
所以表单布局是:
顶部(信息包括客户信息和一堆其他的东西)
中间部分(发票行项目表)
底部(一堆其他信息,包括签名字段)
视觉上在页面上保持上述格式,如果添加了很多发票行项目,页面只是滚动,底部仍然在最后。
可以添加无限数量的发票行,因此如果您只是打印页面,发票行将溢出到下一页,并且包括签名在内的“底部信息”将在最后一页的任何页面上,这是不希望的。我需要它,以便在第一页上显示可以容纳在第一页上而不会出现表单溢出的任何数量的行以及包括签名在内的“底部信息”。额外的行显示在下一页上,标题为“续页”以及发票行的表格列标题。
我的解决方案是创建一个“打印视图”,它使用输入的信息创建表单并循环发票行查询,但仅循环足以填充第一页。如果添加另一行导致表单溢出,那么我将停止循环,显示带有“底部信息”和签名的表单的其余部分,以便它们很好地适合第一页,然后使用标题进行分页符“续页”并显示带有列标题的发票行表和其余的发票行项目。当然,如果续页要溢出,那么我需要分页并重复“续页”过程。棘手的部分是如何确定页面上实际可以容纳多少行,因为每行中的数据长度取决于用户输入。也许只有一个充满大量数据的发票行就可以放在第一页上,而不会导致表单溢出。输入少量数据时,可能是 10 行发票行。
我的主要目的是将整个表单保留在第一页上。如果添加了几个发票行项目,将表单底部推到下一页,那么我只想显示足够的发票行行以将表单保留在第一页上,并为其余的发票行提供一个延续页面不适合后续页面。
注意:打印是通过表单页面上的打印链接完成的,该链接会在另一个窗口中弹出打印视图页面(没有网站标题等)。从那里他们可以从浏览器打印或单击执行 javascript 打印的打印链接。我为很好地打印发票而创建的相同“打印视图”也用于使用 CFDocument 创建的 PDF 视图。生成的 PDF 中的每行字符数与 HTML 打印视图中的不同,因此更难确定可以容纳多少行。