Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在(zebra)打印机上直接从浏览器打印标签/条形码标签_Php_Javascript_Printing - Fatal编程技术网

Php 在(zebra)打印机上直接从浏览器打印标签/条形码标签

Php 在(zebra)打印机上直接从浏览器打印标签/条形码标签,php,javascript,printing,Php,Javascript,Printing,我们必须关注以下情况,对于我们的一个客户,我们正在寻找解决方案。 他构建了一个PHP脚本,生成一个标签,标签上有一些信息和条形码,因此工作流程如下所述:用户输入一些数据(一些是从数据库中提取的数据,一些不是) 当用户单击打印标签时,将打开一个窗口并生成标签。所以现在代码(我想javascript可以完成这项工作)必须完成这项工作。 客户端希望,当用户单击ok(或print label)时,标签将被打印,并且窗口将在没有用户干扰的情况下关闭 可能的解决办法: 因此,事实上: 脚本必须选择正确的打印

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

当用户单击打印标签时,将打开一个窗口并生成标签。所以现在代码(我想javascript可以完成这项工作)必须完成这项工作。 客户端希望,当用户单击ok(或print label)时,标签将被打印,并且窗口将在没有用户干扰的情况下关闭

可能的解决办法:

因此,事实上:

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

  • 谢谢你的帮助;)

    我确实这样做了,但由于基于web的东西的限制,如果不启动java或基于activex的子应用程序,就无法控制windows打印界面,我必须将web浏览器设置为打印到dymo打印机

    现在我强制使用firefox,这意味着我有一个自定义的firefox安装包,它可以将页边距设置为零,关闭页眉和页脚,选择正确的打印机、纸张和景观等(我只做了一个自定义包,因为我有100多台pc需要配置,如果只有几台需要60秒的手动更改作业)。 强制使用firefox的优点是FF允许您选择并设置与系统默认打印机不同的打印机作为默认打印机。因此,在我的例子中,ff是为dymo设置的,系统打印机是为京瓷设置的,所以在firefox之外没有任何东西丢失/设置等

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

    不幸的是,没有简单的方法可以关闭窗口,因为系统打印后台处理程序/驱动程序没有返回事件陷阱返回到web浏览器(由于明显的原因,它们彼此都是沙盒!),所以最好在xxx秒后实现定时关闭

    不过,简而言之,在没有用户输入和做出一些妥协的情况下,要做到这一点是不容易的。
    现在,如果现金和时间对你来说不成问题,我确实有一种完全自动化的方法,等等,但这是一项艰巨的工作,因为你发布的链接谈到了司机的要求,我想你对机器的软件有相当大的控制权?如果是这样,并且您可以使用Firefox,那么一个名为JS打印设置的附加组件可能会工作

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

    我认为只要提供合适的尺寸,它就可以打印标签,但我还没有测试过。我确实在打印机未连接时测试了它,它确实将它发送到了打印机的队列,因此明确地告诉系统打印文件

    以下是文档中的代码示例: (它似乎可以让您设置边距和所有内容。)

    
    //设置纵向方向
    jsPrintSetup.setOption('orientation',jsPrintSetup.kPortRaitionation);
    //以毫米为单位设置顶部边距
    jsPrintSetup.setOption('marginTop',15);
    jsPrintSetup.setOption('marginBottom',15);
    jsPrintSetup.setOption('marginLeft',20);
    jsPrintSetup.setOption('marginRight',10);
    //设置页眉
    setOption('headerStrLeft','My custom header');
    jsPrintSetup.setOption('headerStrCenter','');
    jsPrintSetup.setOption('headerStrRight','&PT');
    //设置空页脚
    jsPrintSetup.setOption('footerStrLeft','';
    jsPrintSetup.setOption('footerStrCenter','';
    jsPrintSetup.setOption('footerStrRight','';
    //清除用户首选项“始终无提示打印”值
    //启用“printSilent”选项的步骤
    jsPrintSetup.clearSilentPrint();
    //抑制打印对话框(仅适用于此上下文)
    jsPrintSetup.setOption('printSilent',1);
    //打印
    //提交打印时,它将异步执行,并且
    //脚本流在打印后继续,与打印过程的完成无关!
    jsPrintSetup.print();
    //下一个命令
    
    可以在Mozilla的加载项站点上找到该加载项:


    我自己从未使用过,但海鸥科技公司的“海鸥科技”似乎是直接打印条形码的一个很好的解决方案。它包括用于处理Oracle、MS SQL和.NET平台等数据库的嵌入式驱动程序,并提供用于从PHP web应用程序打印的Commander。通过PHP应用程序打印的教程此处

    我们只需使用FTP(过去使用windows,现在使用cold fusion内置的功能,但任何功能都可以),然后您就可以通过这种方式将条形码的定义发送到zebra打印机中。。。任何能够打开这样一个通道并将代码发送到打印机的方法都可以。。所以如果你想用javascript来做,看看fireftp是怎么做的。。。然后用那个。。。或者你可以用ZPLII编码发送信息。。。这告诉它如何打印

    也许你可以寻找自动选择打印机。谢谢你的解释,也许我忘了告诉你,但用户做了一件事,他点击确定/打印标签,然后弹出标签和条形码。比所有描述的事情都要做(自动选择打印机、横向/纵向、右页边距等)你不可能做到这一点,那么不容易或便宜的网站和他们的内容和脚本都从系统中沙盒了,甚至连浏览器现在你能做的最好的自动化就是自动弹出打印对话框(ctrl+P)在按钮上单击使用javascript。要执行更多操作,您需要在服务器和打印机之间充当中间件,因为客户端代码是
    <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>