Web applications 如何更好地控制web应用程序的打印机输出?

Web applications 如何更好地控制web应用程序的打印机输出?,web-applications,printing,Web Applications,Printing,我们开发基于网络的系统已经有一段时间了。我们的客户经常使用桌面应用程序,我们通常会将他们的系统升级到基于web的版本。这对他们有很多好处,但我们经常会遇到一个缺点:打印输出。我们开发的系统通常会生成一些需要打印的文档,如: 发票 收据 订单信息 说明书 检查 这些文件中的许多都有预先确定的格式,并且应该以相同或非常相似的方式出现。然而,这往往是一种痛苦。遇到的问题包括: 浏览器通常打印页眉和页脚(页码、日期等),只有客户端可以控制 某些打印样式的支持较差(例如内部分页符),这使得很难控制信

我们开发基于网络的系统已经有一段时间了。我们的客户经常使用桌面应用程序,我们通常会将他们的系统升级到基于web的版本。这对他们有很多好处,但我们经常会遇到一个缺点:打印输出。我们开发的系统通常会生成一些需要打印的文档,如:

  • 发票
  • 收据
  • 订单信息
  • 说明书
  • 检查
这些文件中的许多都有预先确定的格式,并且应该以相同或非常相似的方式出现。然而,这往往是一种痛苦。遇到的问题包括:

  • 浏览器通常打印页眉和页脚(页码、日期等),只有客户端可以控制
  • 某些打印样式的支持较差(例如
    内部分页符
    ),这使得很难控制信息被切断的位置
  • 应用程序无法控制页边距和纸张大小,并且要求用户在每次需要打印特定文档时更改页边距和纸张大小
  • 根据我的经验,作为普通用户,更改纸张大小和方向甚至是一件痛苦的事情。由于某些原因,浏览器不会立即显示纸张大小的更改,对于许多客户机,我必须指示他们更改纸张大小,然后单击“更改纸张方向”两次(从水平方向更改为垂直方向,再返回水平方向),以便正确预览新的纸张大小
  • webbrowser无法(可以理解)自动打印文档。因此,要直接从web应用程序打印收据,我必须在每个客户机上安装一个本地web服务器并调用一个本地网页,而本地网页反过来使用一种编程语言(在我的例子中是PHP),该语言运行一个脚本在本地打印。相当迂回

总而言之,生成非常专门设计的文档并以同样的方式打印它们已被证明需要花费太多的时间和精力,结果很差。我的问题是:是否有人也处理过这个问题,并找到了更好的解决方案?我目前的解决方案是投入大量时间,尝试教育用户,记录用户获得首选打印输出所需的所有步骤,并随着人员、计算机和打印机的变化而不断重复

脚本到动态图像或脚本化PDF生成解决了一些难题。然后在打印时,它们可以根据页面大小进行缩放

我们发现最好的方法是老式的。我们必须在一台预先打印好的点阵表单打印机上每晚打印数千页。因此,我们发现最好还是回到使用打印控件,将所有内容发送到屏幕上,就像courier一样,是一个字符大小固定的字体

然后我们有打印字段($xxxx,10,“右”);该函数将填充空格,如果长度超过10,则截断,并将其显示在屏幕上。右边是一个功能,右边垫左边垫或居中。然后你可以打印空格(2),打印行(1)等等

然后所有东西都精确定位。同样,这看起来很痛苦,但如果您为它开发了一些函数,那么它实际上会使自定义表单变得更容易。我们有一个包装程序来完成所有的数据调用。并制作了一个xxx_header.php、xxx_detail、xxx_footer页面,根据需要包含这些页面,通常只是在循环中调用的几行print_xxx函数

如果这样做,请记住保持$ln\u cnt行计数。因为在你的细节结束时,你将需要$blank\u lines\u needed=$page\u length-$ln\u cnt并对print\u line做一个循环($blank\u lines\u needed)

同样,这似乎很多,但如果你这样做,每次都会成功。我们每天通过网络打印的点阵表格可能比大多数公司都多。在美国,我们每晚通过网络打印大约60000页预先打印的表格。希望这有帮助

然后,我们有了一个使用CURL和pdf的工作,我们可以通过电子方式将一个精确的副本呈现为pdf。因此,如果客户选择,我们可以通过电子邮件发送发票。但是如果我们将它们发送到点阵,它们会打印出精确的大小,所以它们看起来总是一样的