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

时间:2012-08-05 17:13:32

标签: web-applications printing

我们一直在开发基于网络的系统。我们的客户经常习惯于桌面应用程序,我们通常将他们的系统升级到基于Web的版本。这对他们有许多好处,但我们经常遇到一个缺点:打印输出。我们开发的系统经常生成一些需要打印的文档,如:

  • 发票
  • 收据
  • 订单信息
  • 说明书
  • 检查

这些文档中的许多都有预先建立的格式,并且应该以相同或非常类似的方式出现。然而,这往往是一种痛苦。遇到的问题包括:

  • 浏览器经常打印页眉和页脚(页面编号,日期等),只有客户端才能控制。
  • 某些打印样式支持不足(例如page-break-inside),这使得很难控制信息被切断的位置。
  • 应用程序无法控制边距和纸张尺寸,并且每次需要打印特定文档时都要求用户更改此边距和纸张尺寸。
  • 根据我的经验,当作为普通用户这样做时,改变纸张尺寸和方向甚至是一种痛苦。出于某种原因,浏览器不会立即显示纸张大小的变化,对于许多客户,我必须指示他们更改纸张尺寸,然后单击“更改纸张方向”两次(从水平到垂直再返回到水平),以便正确预览新的纸张尺寸。
  • 网页浏览器不能(理解)自动打印文档。因此,要直接从Web应用程序打印收据,我必须在每个客户端上安装本地Web服务器并调用本地Web页面,而后者使用运行脚本的编程语言(在我的情况下为PHP)本地打印。相当迂回。

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

2 个答案:

答案 0 :(得分:0)

动态图像或脚本化PDF生成的

脚本修复了一些令人头疼的问题。然后在打印时,他们可以缩放以适合页面

答案 1 :(得分:0)

我们发现最好的方法是老学校。我们必须每晚打印数千页到点阵预打印表格打印机。所以我们发现最好回到使用打印控件,然后将所有内容发送到屏幕,好像它是一个字符固定字体大小,如快递。

所以我们有print_field($ xxxx,10,"右");如果长度超过10,该函数将填充空格或截断并将其放入屏幕。右边是右边垫左边的垫子或中心的功能。然后你可以做print_spaces(2),print_line(1)等......

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

如果这样做,请记住保留$ ln_cnt行数。因为在你的细节结束时你将不得不采取$ blank_lines_needed = $ page_length- $ ln_cnt并为print_line做一个循环($ blank_lines_needed);

再次看似很多,但如果你这样做,它每次都会有效。我们每天都会通过网络打印更多的点阵形式,然后大多数公司。在美国,我们每晚通过网络打印大约60,000页预打印表格。希望这会有所帮助。

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