问题:
用到ScriptX.cab打印控件,总是提示factory.printing.header为空或不是对象,脚本如下:
var h = form1.factory.printing.header;
var f = form1.factory.printing.footer;
var t = form1.factory.printing.topMargin;
var b = form1.factory.printing.bottomMargin;
var l = form1.factory.printing.leftMargin;
var r = form1.factory.printing.rightMargin;
//设置页眉页脚上下左右边距
form1.factory.printing.header = "";
form1.factory.printing.footer = "";
form1.factory.printing.topMargin="19.05";//存在最小默认值5.02
form1.factory.printing.bottomMargin="19.05";//存在最小默认值4.13
form1.factory.printing.leftMargin="19.05";//存在最小默认值5.08
form1.factory.printing.rightMargin="19.05";//存在最小默认值6.79
// 直接打印
form1.factory.printing.Print(true);//true时弹出打印对话框
//返回到原来的打印设置
form1.factory.printing.header = h;
form1.factory.printing.footer = f;
form1.factory.printing.topMargin=t;
form1.factory.printing.bottomMargin=b;
form1.factory.printing.leftMargin=l;
form1.factory.printing.rightMargin=r;
body里面<object name="factory" id="factory" style="DISPLAY: none" codebase="ScriptX.cab#Version=6,2,433,14" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814">
</object>
解决方案:
1、从网站下载打印控件包
2、安装下载的控件
3、安装不成功的可以手动注册dll文件:在开始---运行里分别输入以下内容并回车
regsvr32 mcprintx.dll
regsvr32 mcscripx.dll
regsvr32 mcmaxipt.dll
regsvr32 mcsecmgr.dll
并注意看返回的信息是否成功并执行4修改注册表。
4、修改注册表:打开注册表,打开[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{1663ed61-23eb-11d2-b92f-008048fdd814}]打开里面的Compatibility Flags打数值数剧改为0;假如没有{1663ed61-23eb-11d2-b92f-008048fdd814}项,则新建一个。
新建注册表中注册项:
对于安装好控件后仍然不能打印的可以尝试如下操作:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{1663ed61-23eb-11d2-b92f-008048fdd814}]
"Compatibility Flags"=dword:00000000