4

我们必须遵循以下情况,对于我们的一个客户,我们正在寻找解决方案。他构建了一个 PHP 脚本,该脚本生成带有一些信息和条形码的标签,因此工作流程如下所述:用户输入一些数据(有些是从数据库中提取的数据,有些不是)

当用户单击打印标签时,会打开一个窗口并生成标签。所以现在代码(我猜javascript可以完成这项工作)必须完成这项工作。客户希望当用户单击 ok (或打印标签)时,标签将被打印并且窗口将关闭,而不会受到用户的任何干扰。

可能的解决方案: http: //dymodevelopers.wordpress.com/2010/06/02/dymo-label-framework-javascript-library-samples-print-a-label/

所以实际上:

  1. 脚本必须选择正确的打印机(不是默认的)
  2. 脚本必须选择正确的格式(横向/纵向和标签大小)
  3. 必须在没有用户干预的情况下打印。
  4. 打印标签后窗口必须自动关闭。

谢谢您的帮助 ;)

4

4 回答 4

2

我正是这样做的,但是由于基于 Web 的东西的限制,如果不触发 java 或基于 activex 的子应用程序就无法控制 Windows 打印界面,我不得不将 Web 浏览器设置为打印到 dymo 打印机。

现在我强制使用 Firefox,这意味着我有一个自定义的 Firefox 安装包,它将边距设置为零,关闭页眉和页脚,选择正确的打印机和纸张和横向等(我只做了一个自定义包,因为我有 100 + pc 的配置,如果它只有几个,它需要 60 秒的更改工作来手动完成)。强制执行 firefox 的优点是 FF 允许您选择和设置与系统默认不同的打印机作为默认打印机。因此,在我的情况下,ff 设置为 dymo,系统打印机设置为 kyocera,因此在 Firefox 之外没有任何内容丢失/设置等。

至于生成条形码,我只是动态创建一个基本代码作为 jpg 在新的弹出窗口中显示 jpg 并使用一点 javascript 自动弹出打印框,因此用户所要做的就是单击确定。没有用户输入就不可能做到这一点!

不幸的是,没有简单的方法可以关闭窗口,因为系统打印后台处理程序/驱动程序没有返回事件陷阱返回到 Web 浏览器(出于明显的原因,它们相互沙箱化!)所以你能做的最好的就是实现一个定时xxx 秒后关闭。

但是,没有任何简单的方法可以在没有用户输入且不做出一些妥协的情况下做到这一点。现在,如果现金和时间对您来说不重要,我确实有一种完全自动化的适当方法等,但这是一项艰巨的工作

于 2013-02-01T09:18:27.193 回答
1

我们只使用一个 FTP(以前使用 Windows,现在使用冷融合内置的东西,但任何人都可以),然后您将斑马打印机的条形码定义发送到机器......任何可以打开这样一个通道并将代码发送到打印机将工作..所以如果你想用javascript来看看fireftp是如何做到的......然后使用它......或者你可以在ZPLII编码中发送信息......告诉它如何打印。

于 2016-03-08T20:19:23.307 回答
0

由于您发布的链接讨论了驱动程序要求,我假设您对机器的软件有相当多的控制权?如果是这种情况并且您可以使用 Firefox,那么名为 JS Print Setup 的附加组件可能会起作用。

它基本上使网页能够直接打印到用户计算机上的打印机,而无需打印对话框。

我认为只要提供正确的尺寸,它就会很好地打印标签,但我还没有测试过。我确实在未连接打印机时对其进行了测试,并且确实将其发送到了该打印机的队列,因此肯定会告诉系统打印文件。

这是文档中的代码示例:(它似乎允许您设置边距和所有内容。)

<script>
// set portrait orientation
jsPrintSetup.setOption('orientation', jsPrintSetup.kPortraitOrientation);

// set top margins in millimeters
jsPrintSetup.setOption('marginTop', 15);
jsPrintSetup.setOption('marginBottom', 15);
jsPrintSetup.setOption('marginLeft', 20);
jsPrintSetup.setOption('marginRight', 10);

// set page header
jsPrintSetup.setOption('headerStrLeft', 'My custom header');
jsPrintSetup.setOption('headerStrCenter', '');
jsPrintSetup.setOption('headerStrRight', '&PT');

// set empty page footer
jsPrintSetup.setOption('footerStrLeft', '');
jsPrintSetup.setOption('footerStrCenter', '');
jsPrintSetup.setOption('footerStrRight', '');

// clears user preferences always silent print value
// to enable using 'printSilent' option
jsPrintSetup.clearSilentPrint();

// Suppress print dialog (for this context only)
jsPrintSetup.setOption('printSilent', 1);

// Do Print 
// When print is submitted it is executed asynchronous and
// script flow continues after print independently of completetion of print process! 
jsPrintSetup.print();

// next commands
</script>

可以在 Mozilla 的附加站点上找到该附加组件:

https://addons.mozilla.org/en-US/firefox/addon/js-print-setup/

于 2013-04-20T08:22:03.930 回答
-2

我自己从未使用过,但 Seagull Scientific 的BarTender似乎是直接打印条形码的好解决方案。它包括用于处理数据库(如 Oracle、MS SQL 和 .NET 平台)的嵌入式驱动程序,并提供用于从 PHP Web 应用程序打印的 Commander。通过 PHP 应用程序打印的教程在这里http://cases.azoft.com/bartender-print-server/

于 2014-01-23T10:01:54.570 回答