/******************
*公文文档操作
*
*
*******************/
//初始化文档编辑控件
//userName:OA系统登陆用户名
//docID:存储在数据库中文件ID
//progID:文档类型
//actionType:操作类别,新建-"new";编辑-"edit";查看-"view"
//signKey:文档签名的Key
//fileName:文件名(不含路径)
function InitalizeOffice(userName, progID, actionType, signKey,fileName,showSaveMenu,
tokenID,XPath_TEMP_Temp,XPathDesc,
fieldXPath_fieldValue,xpath_Editer,xpath_RadioButton)
{
this.UserName = userName;
this.ProgID = progID;
this.ActionType = actionType;
this.SignKey = signKey;
this.FileName = fileName;
this.ObjOffice = document.all.item("OfficeControl");
this.FileUrl = "../CommonPage/DownloadDoc_Common.aspx?TokenID="+tokenID;
this.IsOpened = false;
this.ReadOnly = false;
this.ShowSaveMenu = showSaveMenu;
this.TokenID = tokenID;
this.CurrentDocID = "";
this.XPath_TEMP = XPath_TEMP_Temp; //20061020修改
this.XPathDesc = XPathDesc; //20061024修改
this.FieldXPath_FieldValue = fieldXPath_fieldValue; //20061121修改(加载XPath、XPathValue值)
this.XPath_Editer = xpath_Editer; //2006-12-05修改"XPath编辑字符串"
this.XPath_RadioButton = xpath_RadioButton; //"单选(RadioButton)"XPath字符串
//添加自定义菜单
AddMenu();
//初始化文档
OpenDoc();
}
//添加公文操作自己的菜单,位置在帮助的前面
function AddMenu()
{
//一级菜单
this.ObjOffice.AddCustomMenu2(0,"公文操作");
//二级菜单
this.ObjOffice.AddCustomMenuItem2(0, 0, -1, false, "显示痕迹",false,0);
this.ObjOffice.AddCustomMenuItem2(0, 1, -1, false, "隐藏痕迹",false,1);
this.ObjOffice.AddCustomMenuItem2(0, 2, -1, false, "",true,2);
this.ObjOffice.AddCustomMenuItem2(0, 3, -1, false, "编辑文档",false,3);
this.ObjOffice.AddCustomMenuItem2(0, 4, -1, false, "启用保护",false,4);
this.ObjOffice.AddCustomMenuItem2(0, 5, -1, false, "",true,5);
this.ObjOffice.AddCustomMenuItem2(0, 6, -1, false, "添加印章",false,6);
this.ObjOffice.AddCustomMenuItem2(0, 7, -1, false, "添加本地印章",false,7);
this.ObjOffice.AddCustomMenuItem2(0, 8, -1, false, "印章验证",false,8);
this.ObjOffice.AddCustomMenuItem2(0, 9, -1, false, "",true,9);
this.ObjOffice.AddCustomMenuItem2(0, 10, -1, false, "文字套红",false,10);
this.ObjOffice.AddCustomMenuItem2(0, 11, -1, false, "插入模板",false,11);
this.ObjOffice.AddCustomMenuItem2(0, 12, -1, false, "",true,12);
this.ObjOffice.AddCustomMenuItem2(0, 13, -1, false, "手写签名",false,13);
this.ObjOffice.AddCustomMenuItem2(0, 14, -1, false, "手工绘图",false,14);
this.ObjOffice.AddCustomMenuItem2(0, 15, -1, false, "批注",false,15);
this.ObjOffice.AddCustomMenuItem2(0, 16, -1, false, "",true,16);
this.ObjOffice.AddCustomMenuItem2(0, 17, -1, false, "打印预览",false,17);
this.ObjOffice.AddCustomMenuItem2(0, 18, -1, false, "公文打印",false,18);
this.ObjOffice.AddCustomMenuItem2(0, 19, -1, false, "",true,19);
this.ObjOffice.AddCustomMenuItem2(0, 20, -1, false, "重新加载",false,20);
if (this.ShowSaveMenu == "True")
{
this.ObjOffice.AddCustomMenuItem2(0, 21, -1, false, "保存公文",false,21);
}
//如果是查看操作则不需要保存公文
switch (this.ActionType)
{
case "new" :
this.ObjOffice.EnableCustomMenuItem2(0,0,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,20,-1,false);
/*
this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,3,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,4,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,7,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,8,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,10,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,11,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,12,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,15,-1,false);
*/
break;
case "edit" :
this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
break;
case "view" :
/*
this.ObjOffice.EnableCustomMenuItem2(0,0,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,15,-1,false);
*/
this.ObjOffice.EnableCustomMenuItem2(0,1,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,3,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,4,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,6,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,7,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,10,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,11,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,13,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,14,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,15,-1,false);
this.ObjOffice.EnableCustomMenuItem2(0,20,-1,false);
if (this.ShowSaveMenu == "True")
{
this.ObjOffice.EnableCustomMenuItem2(0,21,-1,false);
}
//this.ObjOffice.EnableCustomMenuItem2(0,16,-1,false);
break;
}
}
//公文操作自定义菜单的操作
//menuPos:一级菜单位置
//submenuPos:二级菜单位置
//subsubmenuPos:三级菜单位置
//menuCaption:菜单标题
//menuID:菜单ID
function CustomOperation(menuPos,submenuPos,subsubmenuPos,menuCaption,menuID)
{
switch (menuID)
{
//显示痕迹
case 0 :
TANGER_OCX_ShowRevisions(true);
break;
//隐藏痕迹
case 1 :
TANGER_OCX_ShowRevisions(false);
break;
//编辑文档
case 3:
TANGER_OCX_unLockAllField();
break;
//启用保护
case 4:
TANGER_OCX_LockAllField();
break;
//添加印章
case 6 :
window.open("../OA.Archive/SelectSignTemplate.aspx","选择印章","height=350, width=350, top=0, left=0, toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");
break;
//添加本地印章
case 7 :
AddSignFromLocal();
break;
//印章验证
case 8 :
DoCheckSign();
break;
//文字套红
case 10 :
var val=window.prompt("输入红头文件的文字","深圳市嵘兴实业发展有限公司");
if(val!="")
{
TANGER_OCX_AddDocHeader(val);
}
break;
//模板套红
case 11 :
window.open("../OA.Archive/SelectHeadTemplate.aspx","选择模板","height=350, width=350, top=0, left=0, toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");
break;
//手写签名
case 13 :
DoHandSign2();
break;
//手工绘图
case 14 :
DoHandDraw2();
break;
//批注
case 15 :
DoFullScreenHandSign();
break;
//打印预览
case 17 :
TANGER_OCX_PrintPreView();
break;
//公文打印
case 18 :
TANGER_OCX_PrintDoc(false);
break;
//重新加载
case 20 :
if (confirm("重新加载将失去所有的修改,确定?"))
{
OpenDoc();
}
break;
//保存公文
case 21 :
TANGER_OCX_SaveEditToServerDatabase();
break;
}
}
//新建文档
function CreateNewDoc()
{
try
{
this.ObjOffice.BeginOpenFromUrl(this.ProgID,true);
}
catch(err)
{
this.IsOpened = false;
alert("err:" + err.number + ":" + err.description);
}
//设置编辑用户
TANGER_OCX_SetDocUser(this.UserName);
}
//新建文档或者打开要编辑、查看的文档
function OpenDoc()
{
switch (this.ActionType)
{
//新建文档
case "new" :
//CreateNewDoc();
try
{
this.ObjOffice.BeginOpenFromUrl(this.ProgID,true);
//
this.ObjOffice.Menubar = false;
this.ObjOffice.Toolbars = false;
this.ObjOffice.Statusbar = true;
//
this.ObjOffice.IsShowToolMenu = false;
this.ObjOffice.SetReadOnly(false,"");
//
this.ObjOffice.FileNew =false;
this.ObjOffice.FileOpen =false;
this.ObjOffice.FileClose =false;
this.ObjOffice.FileSave =false;
this.ObjOffice.FileSaveAS =false;
this.ObjOffice.FilePrintPreview = false;
this.ObjOffice.FilePageSetup = false;
this.ObjOffice.FileProperties = false;
}
catch (err)
{
alert("err:" + err.number + ":" + err.description);
CreateNewDoc();
}
break;
//编辑文档
case "edit" :
try
{
this.ObjOffice.BeginOpenFromUrl(this.FileUrl,true);
//this.ObjOffice.BeginOpenFromUrl(this.ProgID);
this.ObjOffice.Menubar = false;
this.ObjOffice.Toolbars = false;
this.ObjOffice.Statusbar = true;
//
this.ObjOffice.IsShowToolMenu = false;
this.ObjOffice.IsShowToolMenu = false;
//
this.ObjOffice.FileNew =false;
this.ObjOffice.FileOpen =false;
this.ObjOffice.FileClose =false;
this.ObjOffice.FileSave =false;
this.ObjOffice.FileSaveAS =false;
this.ObjOffice.FilePrintPreview = false;
this.ObjOffice.FilePageSetup = false;
this.ObjOffice.FileProperties = false;
this.ObjOffice.SetReadOnly(false,"");
}
catch(err)
{
alert("err:" + err.number + ":" + err.description);
CreateNewDoc();
}
break;
//查看文档
case "view" :
try
{
this.ObjOffice.BeginOpenFromUrl(this.FileUrl);
this.ObjOffice.Menubar = false;
this.ObjOffice.Toolbars = false;
this.ObjOffice.Statusbar = false;
//
this.ObjOffice.FileNew =false;
this.ObjOffice.FileOpen =false;
this.ObjOffice.FileClose =false;
this.ObjOffice.FileSave =false;
this.ObjOffice.FileSaveAS =false;
this.ObjOffice.FilePrintPreview = false;
this.ObjOffice.FilePageSetup = false;
this.ObjOffice.FileProperties = false;
this.ObjOffice.SetReadOnly(true,"");
}
catch(err)
{
alert("err:" + err.number + ":" + err.description);
CreateNewDoc();
}
break;
//默认为新建文档
default:
try
{
this.ObjOffice.CreateNew(this.ProgID);
}
catch(err)
{
this.IsOpened = false;
alert("err:" + err.number + ":" + err.description);
}
break;
}
this.IsOpened = true;
}
//保存文档内容到数据库
function TANGER_OCX_SaveEditToServerDatabase()
{
if(!this.IsOpened)
{
alert("文档没有打开。");
return;
}
if ( (typeof(this.FileName) == "undefined")||(!this.FileName) || (strtrim(this.FileName)==""))
{
alert("必须输入文件名。");
return;
}
//alert(this.FileName);
var newwin,newdoc;
try
{
var getValidErrorMgs="";
getValidErrorMgs = TANGER_OCX_ValidErrorMsg();//XML架构验证
var i = getValidErrorMgs.length;
if (i > 0)
{
alert(getValidErrorMgs);
}
else
{
//设置文档为编辑状态
if (this.XPath_TEMP.length > 0)
{
TANGER_OCX_unLockAllField();
}
//根据XPath获取值
if (this.XPath_TEMP.length > 0)
{
TANGER_OCX_GetXPathValue();
}
//设置文档为[启用保护]
if (this.XPath_TEMP.length > 0)
{
TANGER_OCX_LockAllField();
}
//
if(!TANGER_OCX_doFormOnSubmit())return; //we may do onsubmit first
//call SaveToURL with other form data
retHTML = this.ObjOffice.SaveToURL
("../CommonPage/SaveArchive_Common.aspx",
"ARCHIVEDOC",
"DocType="+this.ObjOffice.DocType+"&TokenID="+this.TokenID+
"&XPath_Temp="+this.ObjOffice.document.getElementById("XPath").value+
"&XPathValue="+this.ObjOffice.document.getElementById("XPathValue").value+
"&FieldValueDesc="+this.ObjOffice.document.getElementById("FieldValueDesc").value+
"&XPathDesc="+this.XPathDesc,
this.FileName,
0);
var Dom = new ActiveXObject("MSXML2.DOMDocument.3.0");
Dom.loadXML(retHTML);
var content = Dom.selectSingleNode("ReMessage/Text").text;
this.CurrentDocID = Dom.selectSingleNode("ReMessage/DocID").text;
alert("保存成功!");
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//保存到服务器硬盘
function TANGER_OCX_SaveEditToServerDisk()
{
var filename = this.FileName;
if(!this.IsOpened)
{
alert("文档没有打开。");
return false;
}
var newwin,newdoc;
try
{
if(!TANGER_OCX_doFormOnSubmit())return false;
retHTML = this.ObjOffice.SaveToURL
("../CommonPage/SaveArchive.aspx",
"ARCHIVEDOC",
"DocType="+this.ObjOffice.DocType+"&TokenID="+this.TokenID,
this.FileName,
0
);
var Dom = new ActiveXObject("MSXML2.DOMDocument.3.0");
Dom.loadXML(retHTML);
var content = Dom.selectSingleNode("ReMessage/Text").text;
this.CurrentDocID = Dom.selectSingleNode("ReMessage/DocID").text;
/*
newwin = window.open("","_blank","left=200,top=200,width=200,height=150,status=0,toolbar=0,menubar=0,location=0,scrollbars=0,resizable=0",false);
newdoc = newwin.document;
newdoc.open();
newdoc.write("<html><head><title>保存内容</title></head><body><center><hr>")
newdoc.write(content+"<br><hr>");
newdoc.write("<input type=button VALUE='关 闭' οnclick='window.close()'>");
newdoc.write('</center></body></html>');
newdoc.close();
*/
}
catch(err){
alert("err:" + err.number + ":" + err.description);
return false;
}
finally{
}
return true;
}
//保存为HTML文档
function TANGER_OCX_SaveAsHTML()
{
var newwin,newdoc;
if(!this.IsOpened)
{
alert("文档没有打开。");
return;
}
if ( (typeof(this.FileName) == "undefined")||(!this.FileName) || (strtrim(this.FileName)==""))
{
alert("必须输入文件名。");
return;
}
try
{
var retHTML = this.ObjOffice.PublishAsHTMLToURL
(
"uploadhtmls.aspx",
"HTMLFILES",
"",
TANGER_OCX_filename
);
newwin = window.open("","_blank","left=200,top=200,width=400,height=300,status=0,toolbar=0,menubar=0,location=0,scrollbars=1,resizable=1",false);
newdoc = newwin.document;
newdoc.open();
newdoc.write("<center><hr>"+retHTML+"<hr><input type=button VALUE='Close Window' οnclick='window.close()'></center>");
newdoc.close();
newwin.focus();
if(window.opener)
{
window.opener.location.reload();
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//从本地增加印章文档指定位置
function AddSignFromLocal()
{
if(this.IsOpened)
{
this.ObjOffice.AddSignFromLocal(
this.UserName,//当前登陆用户
"",//缺省文件
true,//提示选择
0,//left
0,//top
this.SignKey,//SignKey
1,//Relative
100,
0)
}
}
//从URL增加印章文档指定位置
function AddSignFromURL(URL)
{
if(this.IsOpened)
{
this.ObjOffice.AddSignFromURL(
this.UserName,//当前登陆用户
URL,//URL
50,//left
50,//top
this.SignKey,
1,
100,
0)
}
}
//开始手写签名
function DoHandSign()
{
if(this.IsOpened)
{
this.ObjOffice.DoHandSign(
this.UserName,//当前登陆用户 必须
0,//笔型0-实线 0-4 //可选参数
0x00000000, //颜色 0x00RRGGBB//可选参数
2,//笔宽//可选参数
100,//left//可选参数
50,false,this.SignKey); //top//可选参数
}
}
//开始手写签名V4.0.0.0
function DoHandSign2()
{
this.ObjOffice.DoHandSign2 (
this.UserName,//当前登陆用户 必须
this.SignKey, //SignKey
0,//left//可选参数
0,//top
1,//relative=0,表示按照屏幕位置批注
100 //缩放100%,表示原大小
);
}
/*
relative可选参数指明手写批注的位置。默认为4,兼容以前版本。可以取如下值:
0:表示按照屏幕位置插入,此时,Left,Top属性不起作用。
1:光标位置;
2:页边距;
3:页面距离
4:默认设置栏,段落(为兼容以前版本默认方式)
*/
//检查签名结果
function DoCheckSign()
{
if(this.IsOpened)
{
var ret = this.ObjOffice.DoCheckSign
(false,this.SignKey
/*可选参数 IsSilent 缺省为FAlSE,表示弹出验证对话框,否则,只是返回验证结果到返回值*/
);//返回值,验证结果字符串
}
}
//从本地添加图片
function AddPictureFromLocal()
{
if(this.IsOpened)
{
this.ObjOffice.AddPicFromLocal(
"", //path
true,//prompt to select
true,//is float
0,//left
0); //top
};
}
//根据Url添加图片
function AddPictureFromURL(URL)
{
if(this.IsOpened)
{
this.ObjOffice.AddPicFromURL(
URL,//URL Note: URL must return Word supported picture types
true,//is float
0,//left
0);//top
};
}
//根据Url插入文本
function InsertDocFromURL(URL)
{
if(this.IsOpened)
{
this.ObjOffice.AddTemplateFromURL(URL);
};
}
//根据Path插入文本
function InsertDocFromLocal(Path)
{
if(this.IsOpened)
{
this.ObjOffice.AddTemplateFromLocal(Path);
};
}
//全屏绘图
function DoHandDraw()
{
if(this.IsOpened)
{
this.ObjOffice.DoHandDraw(
0,// syle 0-4
0x00ff0000,//color: 0x00RRGGBB optional
3,//width optional
0,//left optional
0);//top optional
}
}
//全屏绘图V4.0.0.0
function DoHandDraw2()
{
this.ObjOffice.DoHandDraw2 (
0,//left//可选参数
0,//top
1,//relative=0,表示按照屏幕位置批注
100 //缩放100%,表示原大小
);
}
//红头模版
function TANGER_OCX_AddDocHeader( strHeader )
{
var i,cNum = 30;
var lineStr = "";
try
{
for(i=0;i<cNum;i++) lineStr += "_";
with(this.ObjOffice.ActiveDocument.Application)
{
Selection.HomeKey(6,0); // go home
Selection.TypeText(strHeader);
Selection.TypeParagraph();
Selection.TypeText(lineStr);
Selection.TypeText("★");
Selection.TypeText(lineStr);
Selection.TypeParagraph();
Selection.HomeKey(6,1);
Selection.ParagraphFormat.Alignment = 1;
with(Selection.Font)
{
Name = "Arial";
Size = 12;
Bold = false;
Italic = false;
Underline = 0;
UnderlineColor = 0;
StrikeThrough = false;
DoubleStrikeThrough = false;
Outline = false;
Emboss = false;
Shadow = false;
Hidden = false;
SmallCaps = false;
AllCaps = false;
Color = 255;
Engrave = false;
Superscript = false;
Subscript = false;
Spacing = 0;
Scaling = 100;
Position = 0;
Kerning = 0;
Animation = 0;
DisableCharacterSpaceGrid = false;
EmphasisMark = 0;
}
Selection.MoveDown(5, 3, 0);
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//获取域代码
function TANGER_OCX_FieldCode(i)
{
try
{
with(this.ObjOffice.ActiveDocument)
{
var Value = Fields(i).Code;
return Value;
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//插入□√
function TANGER_OCX_InsertPane()
{
try
{
with(this.ObjOffice.ActiveDocument.Application)
{
/*
var wdCollapseStart = 1;
var wdCollapseEnd =0;
Selection.Collapse(Direction=wdCollapseStart);
Selection.Fields.Add(Range=Selection.Range, Type=-1, Text="eq "+"//"+"o"+"//"+"ac(□,√)", PreserveFormatting=false);
*/
//AttachedTemplate.AutoTextEntries("Check").Insert(Where=Selection.Range);
/*
with(Application)
{
AttachedTemplate.AutoTextEntries("Check").Insert(Where=Selection.Range);
}
*/
var node;
var checkStr = String.fromCharCode(-3842);
node = Selection.XMLParentNode;
if (!node.HasChildNodes)
{
node.Range.Font.Name = "Wingdings";
node.Range.Text =checkStr;
}
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//取消打勾(插入□)
function TANGER_OCX_UnInsertPane()
{
try
{
with(this.ObjOffice.ActiveDocument.Application)
{
//Selection.TypeText("□");
/*
var wdCollapseStart = 1;
var wdCollapseEnd =0;
Selection.Collapse(Direction=wdCollapseStart);
Selection.Fields.Add(Range=Selection.Range, Type=-1, Text="eq "+"//"+"o"+"//"+"ac(□)", PreserveFormatting=false);
*/
/*
with(Application)
{
AttachedTemplate.AutoTextEntries("UnCheck").Insert(Where=Selection.Range);
}
*/
var node;
var uncheckStr = String.fromCharCode(-3985);
node = Selection.XMLParentNode;
if (!node.HasChildNodes)
{
node.Range.Font.Name = "Wingdings";
node.Range.Text =uncheckStr;
}
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//节点(Node)是否在this.XPath_RadioButton存在,存在返回为true,否则返回false;
function TANGER_OCX_SeachNodeName(nodeName)
{
var i = -1;
var y=0;
var XPath="";
var S = ";";
var RadioButton_String = this.XPath_RadioButton;
var x = RadioButton_String.indexOf(S);
while(x != -1)
{
XPath = RadioButton_String.substring(y,x); //取出XPath参数
y = x+1;
x = RadioButton_String.indexOf(S,x+1);
//
i = XPath.indexOf(nodeName);
if ( i >= 0)
{
break;
}
}
if (i >= 0)
{
return true;
}
else
{
return false;
}
}
//打勾、非打勾的切换
function TANGER_OCX_SwitchCheckStatus()
{
try
{
with(this.ObjOffice.ActiveDocument.Application)
{
var checkStr = String.fromCharCode(-3842); //打勾
var uncheckStr = String.fromCharCode(-3985); //非打勾
var node;
node = Selection.XMLParentNode;
if (this.XPath_RadioButton.length > 0)
{
var NodeName = node.BaseName;
var Flag = TANGER_OCX_SeachNodeName(NodeName);//节点(Node)是否在this.XPath_RadioButton存在,存在返回为true,否则返回false;
if (Flag)
{
TANGER_OCX_SetNodeNameUnCheck(NodeName);//根据NodeName设定节点为“非选择”框
// TANGER_OCX_SetNodeNameUnCheck(NodeName);
//
if ((!node.HasChildNodes) && (node.Text == uncheckStr)||(node.Text == checkStr))
{
node.Range.Font.Name = "Wingdings";
if (node.Text == checkStr)
{
node.Text = uncheckStr;
}
else
{
node.Text = checkStr
}
}
}
else
{
if ((!node.HasChildNodes) && (node.Text == uncheckStr)||(node.Text == checkStr))
{
node.Range.Font.Name = "Wingdings";
if (node.Text == checkStr)
{
node.Text = uncheckStr;
}
else
{
node.Text = checkStr
}
}
}
}
else
{
if ((!node.HasChildNodes) && (node.Text == uncheckStr)||(node.Text == checkStr))
{
node.Range.Font.Name = "Wingdings";
if (node.Text == checkStr)
{
node.Text = uncheckStr;
}
else
{
node.Text = checkStr
}
}
}
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据NodeName设定节点为“非选择”框
function TANGER_OCX_SetNodeNameUnCheck(NodeName)
{
try
{
var wdEditorCurrent = -6;
var uncheckStr = String.fromCharCode(-3985); //非打勾
var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
//var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*",strPrefix);
var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*/x:" + NodeName,strPrefix);
var j = Nodes.Count;
for (i=1;i<=j;i++)
{
var node = Nodes.Item(i);
node.Range.Editors.Add(wdEditorCurrent);
node.Range.Font.Name = "Wingdings";
node.Text = uncheckStr;
}
return true;
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath返回元素的Node
function TANGER_OCX_GetNode(XPath)
{
try
{
with (this.ObjOffice.ActiveDocument)
{
var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
var node = SelectSingleNode(XPath,strPrefix);
return node;
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath插入打勾(非选择XPath时)
function TANGER_OCX_CheckBox(XPath)
{
try
{
with (this.ObjOffice.ActiveDocument)
{
var checkStr = String.fromCharCode(-3842); //打勾
var uncheckStr = String.fromCharCode(-3985); //非打勾
var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
//var node = SelectSingleNode(XPath,strPrefix);
var node =TANGER_OCX_GetNode(XPath);
if (node != null)
{
node.Range.Font.Name = "Wingdings";
SelectSingleNode(XPath,strPrefix).Text = checkStr;
}
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath插入非打勾(非选择XPath时)
function TANGER_OCX_UnCheckBox(XPath)
{
try
{
with (this.ObjOffice.ActiveDocument)
{
var checkStr = String.fromCharCode(-3842); //打勾
var uncheckStr = String.fromCharCode(-3985); //非打勾
var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
//var node = SelectSingleNode(XPath,strPrefix);
var node = TANGER_OCX_GetNode(XPath);
if (node != null)
{
node.Range.Font.Name = "Wingdings";
SelectSingleNode(XPath,strPrefix).Text = uncheckStr;
}
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath返回元素的值
function TANGER_OCX_GetText(XPath)
{
try
{
var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
var ValueText = this.ObjOffice.ActiveDocument.SelectSingleNode(XPath,strPrefix).Text;
return ValueText;
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath设定元素的值
function TANGER_OCX_SetText(XPath,ValueText)
{
try
{
var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
this.ObjOffice.ActiveDocument.SelectSingleNode(XPath,strPrefix).Text = ValueText;
return true;
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据FieldXPath、FieldValue设定XPath的初始值
function TANGER_OCX_SetTextAll(FileValue_XPath)
{
try
{
var y=0;
var XPath=""; //XPath
var XPathValue=""; //XPath值
var S = ";";
var TestXPath = FileValue_XPath;
var x = TestXPath.indexOf(S);
while(x != -1)
{
XPath = TestXPath.substring(y,x); //取出XPath参数
y = x+1;
x = TestXPath.indexOf(S,x+1);
//
XPathValue = TestXPath.substring(y,x); //取出XPath参数
y = x+1;
x = TestXPath.indexOf(S,x+1);
//根据XPath,设定XPath元素的值
//根据XPath,设定XPath元素的值
switch (XPathValue)
{
case "1" : //打勾
{
//打勾、非打勾的切换
TANGER_OCX_CheckBox(XPath);
break;
}
case "2" : //非打勾
{
TANGER_OCX_UnCheckBox(XPath);
break;
}
default :
{
TANGER_OCX_SetText(XPath,XPathValue);
}
}
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath、i返回元素的值(Items)
function TANGER_OCX_GetItemNode(XPath,i)
{
try
{
with (this.ObjOffice.ActiveDocument)
{
var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
var Node = SelectNodes(XPath,strPrefix).Item(i);
return Node;
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath参数获取XPath属性的个数
function TANGER_OCX_GetXPathAttributesCount(XPath,i)
{
try
{
with (this.ObjOffice.ActiveDocument)
{
var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
var count = SelectNodes(XPath,strPrefix).Item(i).Attributes.Count;
return count;
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath参数获取XPath的XMLNode个数
function TANGER_OCX_GetXPathXMLNodeCount(XPath)
{
try
{
with (this.ObjOffice.ActiveDocument)
{
var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
var count = SelectNodes(XPath,strPrefix).Count;
return count;
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath、Item、Attribute参数取出(Desc、Value)值
function TANGER_OCX_GetXPathItemAttributesValue(XPath,i,j)
{
try
{
with (this.ObjOffice.ActiveDocument)
{
var strPrefix="xmlns:x="+"/""+XMLSchemaReferences(1).NamespaceURI+"/"";
var DescValue = SelectNodes(XPath,strPrefix).Item(i).Attributes(j).Text;
return DescValue;
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//根据XPath获取值
function TANGER_OCX_GetXPathValue(){
try
{
if (this.XPath_TEMP.length > 0 )
{
var TestXPath = this.XPath_TEMP;
this.ObjOffice.document.getElementById("XPath").value =TestXPath;
var S = ";";
//计算XPath个数
var j=0;
var index = TestXPath.indexOf(S);
while(index != -1)
{
j++;
index = TestXPath.indexOf(S,index+1);
}
var my_XPath = new Array(j);
//根据XPath参数取出XPath值
var my_FieldValueDesc = new Array(j); //字段值描述数组
//var node;
var i=0;
var TextValue="";
var nodeBaseName="";
var y=0;
var x = TestXPath.indexOf(S);
while(x != -1)
{
my_XPath[i] = TestXPath.substring(y,x); //取出XPath参数
var XPath = my_XPath[i].toString();
with(this.ObjOffice.ActiveDocument.Application)
{
var checkStr = String.fromCharCode(-3842); //打勾
var uncheckStr = String.fromCharCode(-3985); //非打勾
var node;
//
var I = TANGER_OCX_GetXPathXMLNodeCount(XPath); //获取XMLNode的个数
//
if (I > 1)
{
var X=1;
var Y = I+1;
var fieldValueDesc = "";
for (X; X < Y; X++ )
{
node = TANGER_OCX_GetItemNode(XPath,X);
if ((!node.HasChildNodes) && (node.Text == uncheckStr)||(node.Text == checkStr))
{
node.Range.Font.Name = "Wingdings";
if (node.Text == checkStr)
{
var Z = TANGER_OCX_GetXPathAttributesCount(XPath,X); //根据XPath获取XMLNode的属性的个数
var a = 1;
var b = Z+1;
for (a; a < b; a++)
{
if (a ==1) //取属性描述(Desc)值
{
fieldValueDesc += TANGER_OCX_GetXPathItemAttributesValue(XPath,X,a)+",";
}
else if (a == 2) //取属性(Value)值
{
TextValue = TextValue + TANGER_OCX_GetXPathItemAttributesValue(XPath,X,a)+",";
}
}
}
}
}
//将单选或多选的Desc、Value值的最后一个逗号去掉。
var e = fieldValueDesc.length;
var Str = ",";
var f = fieldValueDesc.lastIndexOf(Str);
var g = 0;
g = f+ 1;
if (e == g)
{
fieldValueDesc = fieldValueDesc.substring(0,f);
}
//
/*
var Str = ",";
var e = TextValue.length;
var f = TextValue.lastIndexOf(Str);
var g = 0;
g = f+1;
if (e== g)
{
TextValue = TextValue.substring(0,f);
}
*/
//
my_FieldValueDesc[i] = fieldValueDesc+";";
TextValue += "*";
}
else
{
TextValue = TextValue + TANGER_OCX_GetText(XPath) + "*"; //求出XPath值
my_FieldValueDesc[i] = ""+";";
}
y = x+1;
i++;
x = TestXPath.indexOf(S,x+1);
}
}
this.ObjOffice.document.getElementById("XPathValue").value =TextValue; //将XPath值赋给---XPathValue
//将my_FieldValueDesc值赋给---FieldValueDesc(字段值描述)
var FieldValueDescStr = "";
var c =0;
var d = my_FieldValueDesc.length;
for (c ; c < d; c++)
{
FieldValueDescStr += my_FieldValueDesc[c].toString();
}
this.ObjOffice.document.getElementById("FieldValueDesc").value = FieldValueDescStr; //
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//编辑所有XPath
function TANGER_OCX_GetEditer_AllField()
{
try
{
var XPath_Editer_Temp = this.XPath_Editer;
var S = ";";
var nodeBaseName="";
var y=0;
var x = XPath_Editer_Temp.indexOf(S);
while(x != -1)
{
nodeBaseName = XPath_Editer_Temp.substring(y,x); //取出XPath参数
TANGER_OCX_EditerFieldNode(nodeBaseName);
y = x+1;
x = XPath_Editer_Temp.indexOf(S,x+1);
}
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//编辑XPath
function TANGER_OCX_EditerFieldNode(XPath)
{
try
{
var wdEditorCurrent = -6;
var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*",strPrefix);
var j = Nodes.Count;
for (i=1;i<=j;i++)
{
var node = Nodes.Item(i);
if (!node.HasChildNodes)
{
if (node.BaseName == XPath)
{
node.Range.Editors.Add(wdEditorCurrent);
}
}
}
return true;
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//解除[启用保护]
function TANGER_OCX_unLockAllField()
{
try
{
var wdEditorCurrent = -6;
var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*",strPrefix);
var j = Nodes.Count;
for (i=1;i<=j;i++)
{
var node = Nodes.Item(i);
if (!node.HasChildNodes)
{
node.Range.Editors.Add(wdEditorCurrent);
}
}
return true;
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//[启用保护]
function TANGER_OCX_LockAllField()
{
try
{
var strPrefix="xmlns:x="+"/""+this.ObjOffice.ActiveDocument.XMLSchemaReferences(1).NamespaceURI+"/"";
var Nodes = this.ObjOffice.ActiveDocument.SelectNodes("///*",strPrefix);
var j = Nodes.Count;
for( i=1;i<=j;i++){
var node = Nodes.Item(i);
if( node.Range.Editors.Count > 0 )
{
node.Range.Editors.Item(1).DeleteAll();
}
}
return true;
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
//XML架构验证
function TANGER_OCX_ValidErrorMsg()
{
try
{
var wdXMLValidationStatusOK = 0;
var Nodes = this.ObjOffice.ActiveDocument.XMLNodes;
var j = Nodes.Count;
var getValidErrorMgs="";
//alert(j);
for(i=1;i<=j;i++)
{
var node = Nodes.Item(i);
node.Validate();
if ( node.ValidationStatus != wdXMLValidationStatusOK)
{
getValidErrorMgs += node.BaseName + node.ValidationErrorText + "/n/r";
}
}
return getValidErrorMgs;
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
function strtrim(value)
{
return value.replace(/^/s+/,'').replace(//s+$/,'');
}
function TANGER_OCX_doFormOnSubmit()
{
var form = document.forms[0];
if (form.onsubmit)
{
var retVal = form.onsubmit();
if (typeof retVal == "boolean" && retVal == false)
return false;
}
return true;
}
function TANGER_OCX_EnableReviewBar(boolvalue)
{
this.ObjOffice.ActiveDocument.CommandBars("Reviewing").Enabled = boolvalue;
this.ObjOffice.ActiveDocument.CommandBars("Track Changes").Enabled = boolvalue;
this.ObjOffice.IsShowToolMenu = boolvalue;
}
function TANGER_OCX_SetReviewMode(boolvalue)
{
this.ObjOffice.ActiveDocument.TrackRevisions = boolvalue;
}
function TANGER_OCX_SetMarkModify(boolvalue)
{
TANGER_OCX_SetReviewMode(boolvalue);
TANGER_OCX_EnableReviewBar(!boolvalue);
}
function TANGER_OCX_ShowRevisions(boolvalue)
{
try{this.ObjOffice.SetReadOnly(false,'');}catch(E){alert(E.description);}finally{};
this.ObjOffice.ActiveDocument.ShowRevisions = boolvalue;
this.ObjOffice.ActiveDocument.TrackRevisions = boolvalue;
this.ObjOffice.EnableCustomMenuItem2(0,0,-1,!boolvalue);
this.ObjOffice.EnableCustomMenuItem2(0,1,-1,boolvalue);
if (this.ActionType == "view")
{
this.ObjOffice.SetReadOnly(true,'');
}
}
function TANGER_OCX_PrintRevisions(boolvalue)
{
this.ObjOffice.ActiveDocument.PrintRevisions = boolvalue;
}
function TANGER_OCX_SetDocUser(username)
{
with(this.ObjOffice.ActiveDocument.Application)
{
UserName = this.UserName;
}
}
function TANGER_OCX_ChgLayout()
{
try
{
this.ObjOffice.showdialog(5);
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
function TANGER_OCX_PrintPreView()
{
try
{
this.ObjOffice.PrintPreview();
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
function TANGER_OCX_PrintDoc()
{
try
{
this.ObjOffice.printout(true);
}
catch(err){
alert("err:" + err.number + ":" + err.description);
}
finally{
}
}
function TANGER_OCX_EnableFileNewMenu(boolvalue)
{
this.ObjOffice.EnableFileCommand(0) = boolvalue;
}
function TANGER_OCX_EnableFileOpenMenu(boolvalue)
{
this.ObjOffice.EnableFileCommand(1) = boolvalue;
}
function TANGER_OCX_EnableFileCloseMenu(boolvalue)
{
this.ObjOffice.EnableFileCommand(2) = boolvalue;
}
function TANGER_OCX_EnableFileSaveMenu(boolvalue)
{
this.ObjOffice.EnableFileCommand(3) = boolvalue;
}
function TANGER_OCX_EnableFileSaveAsMenu(boolvalue)
{
this.ObjOffice.EnableFileCommand(4) = boolvalue;
}
function TANGER_OCX_EnableFilePrintMenu(boolvalue)
{
this.ObjOffice.EnableFileCommand(5) = boolvalue;
}
function TANGER_OCX_EnableFilePrintPreviewMenu(boolvalue)
{
this.ObjOffice.EnableFileCommand(6) = boolvalue;
}
function TANGER_OCX_OnDocumentOpened(str, obj)
{
this.IsOpened = true;
TANGER_OCX_SetDocUser(this.UserName);
}
function TANGER_OCX_OnDocumentClosed()
{
this.IsOpened = false;
}
function doFileFunction(menuID)
{
return "";
}
function DoFullScreenHandSign()
{
if(this.IsOpened)
{
this.ObjOffice.DoHandSign2(
this.UserName,//当前登陆用户 必须
this.SignKey,
0,//left//可选参数
0,//top
1,//relative=0,表示按照屏幕位置批注
100 //缩放100%,表示原大小
);
}
}
function openWindow(URL,Title)
{
window.open(URL,Title,"height=450, width=500, top=0, left=0, toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no");
}
function TANGER_OCX_SetReviewMode(boolvalue)
{
this.ObjOffice.ActiveDocument.TrackRevisions = boolvalue;
}
function TANGER_OCX_PrintRevisions(boolvalue)
{
this.ObjOffice.SetReadOnly(false,"");
this.ObjOffice.ActiveDocument.PrintRevisions = boolvalue;
if (this.ActionType == "view")
{
this.ObjOffice.SetReadOnly(true,"");
}
}
function TANGER_OCX_RejectAllRevisions()
{
this.ObjOffice.ActiveDocument. RejectAllRevisions ();
}
function TANGER_OCX_SetReadOnly(boolvalue)
{
var i;
try
{
if (boolvalue) this.ObjOffice.IsShowToolMenu = false;
with(this.ObjOffice.ActiveDocument)
{
if (this.ObjOffice.ProgID == "Word.Document") //word
{
if ( (ProtectionType != -1) && !boolvalue)
{
Unprotect();
}
if ( (ProtectionType == -1) && boolvalue)
{
Protect(2,true,"");
}
}
else if(this.ObjOffice.ProgID == "Excel.Sheet")//excel
{
for(i=1;i<=Application.Sheets.Count;i++)
{
if(boolvalue)
{
Application.Sheets(i).Protect("",true,true,true);
}
else
{
Application.Sheets(i).Unprotect("");
}
}
if(boolvalue)
{
Application.ActiveWorkbook.Protect("",true);
}
else
{
Application.ActiveWorkbook.Unprotect("");
}
}
}
}
catch(err){
alert("错误:" + err.number + ":" + err.description);
}
finally{}
}
function TANGER_OCX_PrintDoc(isBackground)
{
var oldOption;
try
{
var objOptions = this.ObjOffice.ActiveDocument.Application.Options;
oldOption = objOptions.PrintBackground;
objOptions.PrintBackground = isBackground;
}
catch(err){};
TANGER_OCX_ShowRevisions(false);
TANGER_OCX_SetReadOnly(false,"");
TANGER_OCX_PrintRevisions(false);
this.ObjOffice.printout(true);
if(this.ActionType=="view")
{
TANGER_OCX_SetReadOnly(true,"");
}
else
{
TANGER_OCX_ShowRevisions(false,"");
}
}
// 文件打开后对文档的设置
function SetAfterOpenFromURL(doc)
{
//设置编辑用户
TANGER_OCX_SetDocUser(this.UserName);
TANGER_OCX_ShowRevisions(false);
//TANGER_OCX_ShowRevisions(true);
this.ReadOnly = false;
if (this.ActionType == "view")
{
this.ObjOffice.SetReadOnly(true,'');
this.ReadOnly = true;
}
if (this.ActionType == "new")
{
//加载初始数据
if (this.FieldXPath_FieldValue.length > 0)
{
//设置文档为编辑状态
TANGER_OCX_unLockAllField();
//根据FieldXPath、FieldValue设定XPath的初始值
TANGER_OCX_SetTextAll(this.FieldXPath_FieldValue.toString());
//设置文档为[启用保护]
TANGER_OCX_LockAllField();
}
}
if (this.XPath_Editer.length > 0)
{
TANGER_OCX_GetEditer_AllField();
}
}
//设置域值
function CopyTextToBookMark(BookMarkName,ValueText)
{
try
{
var bkmkObj = TANGER_OCX_OBJ.ActiveDocument.BookMarks(BookMarkName)
if(!bkmkObj)
{
alert("模板中不存在名称为" + BookMarkName +"的书签!");
}
var saverange = bkmkObj.Range;
saverange.Text= ValueText;
TANGER_OCX_OBJ.ActiveDocument.Bookmarks.Add(BookMarkName,saverange);
}
catch(err)
{
alert("错误:" + err.number + ":" + err.description);
}
finally
{}
}