Javascript 关于将内容限制为单个打印页面的想法?

Javascript 关于将内容限制为单个打印页面的想法?,javascript,jquery,html,css,printing,Javascript,Jquery,Html,Css,Printing,我有5-6个用户在模板中填写的文本区域(几个专栏,基本上是新闻稿格式)。我需要将他们的内容限制在一个打印页面上,但我很难想出切实可行的解决方案。打印格式(边距、字体大小等)对于所有用户都是相同的,因为它是从中央来源打印的 我有几个想法,但它们似乎都不可靠,难以实施: 使用JavaScript确定内容的高度,并据此估计打印页面的数量。问题在于浏览器字体大小可能会有所不同,这只是一个粗略的估计(像素到英寸),等等 限制字符数。这是有问题的,因为存在各种文本字段,某些字符(如M)比其他字符(如I)占

我有5-6个用户在模板中填写的文本区域(几个专栏,基本上是新闻稿格式)。我需要将他们的内容限制在一个打印页面上,但我很难想出切实可行的解决方案。打印格式(边距、字体大小等)对于所有用户都是相同的,因为它是从中央来源打印的

我有几个想法,但它们似乎都不可靠,难以实施:

  • 使用JavaScript确定内容的高度,并据此估计打印页面的数量。问题在于浏览器字体大小可能会有所不同,这只是一个粗略的估计(像素到英寸),等等
  • 限制字符数。这是有问题的,因为存在各种文本字段,某些字符(如M)比其他字符(如I)占用更多空间,换行符显然要多得多

你们都有什么想法?我感谢你的帮助

测量内容等可能非常棘手。相反,读一读如何做一个决定。CSS使您能够控制文本的打印内容和打印方式

编辑:


我从来没有像你想的那样进行过限制性页面打印,但我认为通过使用固定字体(每个字符占用的空间完全相同),你也许可以完成它。所以,试着打印一个充满固定字体字符的页面,然后看看x和y中可以容纳多少字符。然后使用JavaScript(动态地,例如使用jQuery)监视输入框中已使用的行数。然后,您就可以限制用户输入过多的文本/换行符(您需要编写所有这些代码,因为我怀疑是否有解决方案)。您还需要考虑打印页面上文本区域之间的间距。这有意义吗?

您可以使用单间距字体格式化打印输出-这意味着字体上的每个字母/数字/等的宽度相同(例如Courier)。单间距字体在早期计算机时代非常流行,原因与此类似——它允许开发者控制屏幕上显示的内容

使用固定的列宽度,您现在可以确定用户每行可以添加多少字符。剩下的唯一挑战是计算换行符,这可以通过使用Javascript搜索换行符来实现

因此,考虑到这些变量:

  • 给定元素中每行的字符数(列的宽度)
  • 每个元素的行数(内容框的高度)
现在,您可以提前准确地知道您的内容是否适合页面

计算每个输入字段的行数,换行符只会强制您开始计算另一行,而不管当前行中有多少个字符

这应该给你确切的控制量你需要

至于外观,只要你想要那种“打字”的感觉,就不难设计出有趣的风格;)快速的网络搜索会产生一些单间距字体,这可能会有所帮助:


    • 页面溢出时减少行距

      线宽=12'默认值

      最大线=50

      -这是你数的线

      如果CountLines>MaxLines,则LineSpace=LineSpace*MaxLines/CountLines


      最复杂的选择是更改字体大小直到合适。

      谢谢Gert。你能想出一种方法来实际设置高度限制吗?见我上面的答案(这个文本字段是有限的)。他确实要求“实际的解决方案”;)