2013-02-01 66 views
3

我们必须遵循以下情况,对于我们的客户之一,我们正在寻找解决方案。 他已经构建了一个PHP脚本,该脚本生成一个带有一些信息和条形码的标签,因此工作流程如下:用户输入一些数据(某些数据是从数据库中提取的,有些不是)直接从(斑马纹)打印机上的浏览器打印贴纸/条形码标签

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

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

所以实际上:

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

感谢您的帮助;)

+0

也许你可以看看[这里](http://stackoverflow.com/questions/7891259/can-i-have-javascript-select-printer-to-use)自动选择打印机。 –

回答

2

我做的正是这一点,但由于基于网络的东西,而无论是发射一个Java或ActiveX为本次的应用程序,我不得不无法控制窗口打印接口的限制将Web浏览器设置为打印到dymo打印机。

现在我强制使用firefox,这意味着我有一个自定义安装捆绑的Firefox,它将页边距设置为零,关闭页眉和页脚,选择正确的打印机和纸张和风景等等(我只做了一个自定义捆绑因为我有100多台电脑来配置,如果它只有60秒的更换工作手动完成)。 强制执行Firefox的优势在于,FF允许您选择并设置系统默认的不同打印机作为默认打印机。所以在我的情况下,ff被设置为dymo的系统打印机设置为京瓷的,所以没有任何东西在firefox之外丢失/设置等。

至于生成条形码,我只是创建一个基本代码作为一个jpg在一个新的弹出窗口中显示jpg并使用一个小的javascript来自动弹出打印框,所以用户必须做的是点击确定。没有用户输入就无法做到这一点!

不幸的是,没有简单的方法来关闭窗口,因为没有从系统打印假脱机程序/驱动程序返回到Web浏览器的返回事件陷阱(因为显而易见的原因,它们相互之间被沙盒包装在一起!),所以您可以做的最好在xxx秒后执行定时关闭。

虽然没有简单的方法来做到这一点,没有用户输入,也没有做出一些妥协。 现在,如果现金和时间对你没有问题,我确实有一个完全自动化的方法,但它是一个很大的工作

+0

感谢您的解释,也许我忘了告诉,但用户做了一件事,他点击了确定/打印标签,并弹出标签和条形码将出现。 比所有被discibed事情必须完成(自动选择打印机,风景/人像,右边距等) – user2031649

+0

你不能做到这一点,然后不容易或便宜的网站及其内容和脚本从系统中沙箱甚至浏览器这些天,你可以做的最好的自动化它会自动弹出打印对话框(CTRL + P)在按钮点击使用JavaScript。为了做更多的事情,你需要一些东西来充当服务器和打印机之间的中间件,因为客户端代码是完全隔离的。 – Dave

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/

-1

从来没有使用过自己,但海鸥科学” BarTender似乎是条形码直接打印一个很好的解决方案。它包括用于处理Oracle,MS SQL和.NET平台等数据库的嵌入式驱动程序,并提供用于从PHP Web应用程序进行打印的Commander。这里使用PHP应用程序进行打印的教程http://cases.azoft.com/bartender-print-server/

1

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