如何通过JavaScript限制文档不同部分的编辑权限(注:以下内容仅支持office2003)
在使用NTKO OFFICE文档控件打开了一个word文档后,如果想对文档使用保护功能,可以使用如下javascript代码:
var ntko_OCX_OBJ=document.all.item("NTKO_OCX"); /*获取文档控件对象*/
ntko_OCX_OBJ.ActiveDocument.Protect(3,false,"password",false,true);
上面这段代码中蓝色粗体的代码完成了保护文档的操作,为了方便说明将参数修改为:
ntko_OCX_OBJ.ActiveDocument.Protec(Type,NoReset,Password,UseIRM,EnforceStyleLock)
Type 指定文档的保护类型。类型:3,表示只读.取值:(-1|0|1|2|3).
NoReset 如果值为 False,则将窗体域重新设置为其默认值。如果值为 True,而指定文档又是处于保护状态,则保留当前窗体域的值.取值:(true|false)
Password 删除指定文档的保护所需的密码(当需要取消对文档的保护时,系统会提示你输入的密码.如果取消了对文档的保护,任何用户都可以对文档进行编辑)。取值:英文和数字组成字符串
UseIRM 指定保护文档不被更改时是否使用“信息版权管理”(如果不明白也没有关系,这个值一般为false)。取值:(true|false)
EnforceStyleLock 指定是否在受保护的文档中实施格式设置限制.取值:(true|false).
如果要想用户只能编辑该文档的一部分,可以先选定可以被用户编辑的那部分文字,然后调用如下javascript代码:
ntko_OCX_OBJ.ActiveDocument.Application.Selection.Editors.Add(-1);
该方法只有一个参数,指示了被授予编辑权限的用户是谁(-1代表所有用户).word文件分配给区域和选定部分的权限在文档受到保护之后就会生效,即用户可以对其授权的部分文档进行编辑,但不能编辑没有被受权的部分.
不但可以授予用户编辑某个区域的权限,还可以授予用户表格中哪几个单元格可以被编辑的权限.使用如下代码:
ntko_OCX_OBJ.ActiveDocument.Tables(1).Cell(2, 1).Range.Editors.Add (-1);
其中Tables(1).指定了word文档中的第1个表格,参数指定了该表格是文档中的第几个表格,Cell(2, 1)里面的第一个参数是单元格的行数,第2格参数是单元格的列数.
在一个WORD文档中,如果有下面的表格:
你不想让用户修改表格中第一行的4个单元格,只想让用户填入自己的信息.就可以先授予用户编辑第2行4个单元格的权限:
ntko_OCX_OBJ.ActiveDocument.Tables(1).Cell(2, 1).Range.Editors.Add (-1);
ntko_OCX_OBJ.ActiveDocument.Tables(1).Cell(2, 2).Range.Editors.Add (-1);
ntko_OCX_OBJ.ActiveDocument.Tables(1).Cell(2, 3).Range.Editors.Add (-1);
ntko_OCX_OBJ.ActiveDocument.Tables(1).Cell(2, 4).Range.Editors.Add (-1);
Tables(1)参数1:表示该表格式文档中的第一个表格,如果该表格是文档中的第3个表格,应该使用:Tables(3).然后再保护文档,这样用户就不能编辑该文档,但有在该表格中第2行的四个单元格中编辑的权限.
另外,控件对象.ActiveDocument.DeleteAllEditableRanges(-1);可以用来删除文档中的所有可编辑区域.
示例下载:
|