紫海td5.0.9攻略:使用Activex实现自动打印

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 05:44:35

最开始使用PAZU控件来实现自动打印。安装了Smart Printer来打印tif文件。

使用localhost是可以的。但是用ip访问,就不能用。需要license。虽然是免费申请的。但是麻烦啊,而且我的服务器是外网不能访问的。心一狠,我就不信不用pazu做不出来。。。。

 

网上找了下。使用smsx.cab来实现。首先下载安装文件。安装好后 有个smsx.cab文件 。拷贝到项目里。

在页面上添加代码

Html代码  
  1.  id="factory"   style="display:none"        
  2.   classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"        
  3.   codebase="smsx.cab#Version=6.5.439.50">  
  4.   
Html代码  
  1.   name="Button1" type="button" value="打印试试!" onclick="doprint()" style="width: 301px" />  

JS代码

Js代码  
  1. function doprint(){   
  2.      if (!factory.object) {   
  3.   
  4.             alert("打印控件没有正确安装!");   
  5.   
  6.             return;   
  7.   
  8.           }   
  9.      else{      
  10.      try{   
  11.          factory.printing.printer   =   "Smart Print";   
  12.          factory.printing.header   =  "";      
  13.          factory.printing.footer   =  "";      
  14.          factory.printing.portrait   =   true;     //portrait是指打印方向,设置为true就是纵向,false就是横向。      
  15.                //......   
  16.          factory.DoPrint(false);     //设置为false,直接打印      
  17.      }catch(e){   
  18.           alert("提示语句!");   
  19.         //....   
  20.      }   
  21.      }   
  22.  }     

 就可以了。另外设置smart printer的属性 如 自动保存文件夹和保存格式。

备注一些常用功能:

Js代码  
  1.   
  2. // -------------------基本功能,可免费使用-----------------------   
  3. factory.printing.header = "";//页眉   
  4. factory.printing.footer = "";//页脚   
  5. factory.printing.SetMarginMeasure(1);//页边距单位,1为毫米,2为英寸   
  6.   
  7. //边距设置,需要注意大部分打印机都不能进行零边距打印,即有一个边距的最小值,一般都是6毫米以上   
  8. //设置边距的时候时候如果设置为零,就会自动调整为它的最小边距   
  9. factory.printing.leftMargin = 7;//左边距   
  10. factory.printing.topMargin = 7;//上边距   
  11. factory.printing.rightMargin = 7;//右边距   
  12. factory.printing.bottomMargin = 7;//下边距   
  13. factory.printing.portrait = true;//是否纵向打印,横向打印为false   
  14.   
  15. //--------------------高级功能---------------------------------------------   
  16. factory.printing.printer = "EPSON LQ-1600KIII";//指定使用的打印机   
  17. //factory.printing.printer = "\\\\cosa-data\\HPLaserJ";//如为网络打印机,则需要进行字符转义   
  18. factory.printing.paperSize = "A4";//指定使用的纸张   
  19. factory.printing.paperSource = "Manual feed";//进纸方式,这里是手动进纸   
  20. factory.printing.copies = 1;//打印份数   
  21. factory.printing.printBackground = false;//是否打印背景图片   
  22. factory.printing.SetPageRange(false, 1, 3); //打印1至3页   
  23.   
  24. //---------------------常用函数--------------------------------   
  25. factory.printing.Print(false);//无确认打印,true时打印前需进行确认   
  26. //factory.printing.Print(false, pageFrame); pageFrame为Iframe或Frame框架名称,只打印框架内容   
  27. factory.printing.PrintSetup();//打印设置   
  28. factory.printing.Preview();//打印预览   
  29. factory.printing.WaitForSpoolingComplete();//等待上一个打印任务完全送入打印池,在连续无确认打印时非常有用   
  30. factory.printing.EnumPrinters(index);//枚举已安装的所有打印机,主要用于生成打印机选择功能   
  31.   

 缺点:只能在IE下使用。需安装active控件。

注意:需要把服务器IP添加为本地信任站点。否则打印不能正确执行。