3

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

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

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

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

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

4

2 回答 2

0

动态图像的脚本或脚本化的 PDF 生成解决了一些令人头疼的问题。然后在打印时,它们可以缩放以适合页面

于 2013-12-26T18:21:50.923 回答
0

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

所以我们有 print_field($xxxx,10,"right"); 如果超过 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 实用程序的工作,我们可以将精确的副本以电子方式呈现为 pdf。因此,如果客户愿意,我们可以通过电子邮件发送发票。但是,如果我们将它们发送到点阵,它们会打印出准确的尺寸,因此它们看起来总是一样的。

于 2014-11-22T14:18:56.827 回答