在javascript / php批量打印?

开发技术 作者: 2024-06-15 19:25:01
有没有办法在javascript/php中实现批量/大量打印?我在网上搜索,找到的大多数答案都是针对.net和java的.我需要一次排队大约600个文件.我找到了PECLprinterlibrary,但是医生说它只能在Windows9.x,ME,NT4和2000下使用.PECL库是否可以在linux服务器下运行?与PECL图书馆合作还是有其

有没有办法在javascript / PHP中实现批量/大量打印?我在网上搜索,找到的大多数答案都是针对.net和java的.我需要一次排队大约600个文件.我找到了PECL printer library,但是医生说它只能在Windows 9.x,ME,NT4和2000下使用.PECL库是否可以在linux服务器下运行?与PECL图书馆合作还是有其他选择?

解决方法:

在Windows中控制打印机并不是一件大事,因为我们有许多可用的win32api,或者可以创建入口点来动态打印. PHP是服务器端,JavaScript是客户端脚本语言.

根据我的说法,无法在未经许可/通知的情况下在客户端进行批量打印/打印.因此,用户必须授权打印作业.

开发人员在Linux下打印的经验较少.即使我不太了解,但我知道一种方法.我从来没有尝试或做过.在PHP下没有任何内置的打印/控制功能.在PHP下没有可用的扩展也可以这样做.但是在Linux下有一个命令知道LPR(行式打印机守护程序协议)可以在PHP下用来进行打印,如果在PHP下授权shell_exec来执行shell命令.命令如下:

shell_exec("lpr -P 'printer' -r 'filename.txt');

您必须通过RFC Protocol才能获得LPR.您必须为守护进程创建抽象层以控制和发送打印命令.创建守护进程的一个很好的例子是here.

完成这些后,您将能够通过PHP在Linux下打印文档.

附加问题

想通过Website / localhost进行客户端打印

小答案

不,您无法在未经用户许可的情况下直接控制客户端打印机,这也取决于每个会话.因此,如果您想要访问另一个会话,您必须再次获得用户的许可.

答案很长

是的,它可以通过许多调整和在某些条件下进行控制.由于大多数用户使用Windows作为相应的答案.但要了解其工作原理,您必须了解Print Dialog的内部结构.

打印对话框分为两部分.一个是Windows API,另一个是打印机驱动程序. Windows API是由各种DLL(动态链接库)保存的公共代码集,它们是Windows操作系统的一部分. Windows API提供了一种常见的干扰,允许所有程序都可以使用,允许所有程序访问同一组打印机驱动程序,而不是打印机制造商必须创建驱动程序软件.

打印机驱动程序以不同语言创建,它们控制硬件的不同部分以将指令发送到打印机.控制流程的主打印机驱动程序是PCL5和PostScript等,打印机驱动程序更改特定打印机可以识别的自定义标记语言.

因此,基本上我们需要直接访问DLL并通过现代浏览器(Chrome,Firefox等),这是不可能的,但一个浏览器可以提供访问,即Internet浏览器,它是Windows操作系统本身的一部分.

因此,第一个条件是用户必须使用Internet Explorer并通过其他访问不为我所知.接下来可以通过ActiveX控件直接访问API.原则上它不依赖于Microsoft Windows,但实际上,大多数ActiveX控件都需要Microsoft Windows或Windows模拟器.大多数还要求客户端在Intel x86硬件上运行,因为它们包含已编译的代码.

因此,ActiveX控件仅通过用户提示进行访问.因此,使用必须手动更改控件或再次用户必须提供对网页的访问.如果更改了设置,则计算机存在很大的危险,因为它可以访问计算机硬件和其他组件.计算机可以轻松入侵.因此,您必须非常谨慎地使用它.因此,第三个条件是直接访问ActiveX控件.

我用过ScriptX,免费版让你设置一些基本参数,见下面的例子:

<!-- MeadCo ScriptX -->
<object id=factory style="display:none"
  classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
  codebase="http://[your path here]/smsx.cab#Version=7.0.0.8 ">
</object>


<script>
  function printWindow() {
    factory.printing.header = "This is MeadCo";
    factory.printing.footer = "Printing by ScriptX";
    factory.printing.portrait = false;
    factory.printing.leftMargin = 1.0;
    factory.printing.topMargin = 1.0;
    factory.printing.rightMargin = 1.0;
    factory.printing.bottomMargin = 1.0;
    factory.printing.Print(false);
  }
</script>

我提供了这样做的方法,你必须根据自己的要求休息.我再一次告诉你,不要改变ActiveX的设置来启用哪个对用户造成了很大的威胁.机器很容易被黑客攻击,对计算机中可用信息的威胁很大.

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_27661.html