var OFFICE_CONTROL_OBJ;//控件对象
|
var IsFileOpened; //控件是否打开文档
|
var fileType;
|
var fileTypeSimple;
|
var canApplyTemplate = false;//是否可以套红
|
var canEditAttach = false;//是否可以编辑附件
|
|
function intializePage(fileUrl) {
|
OFFICE_CONTROL_OBJ = document.all("TANGER_OCX")
|
|
//---------以下是告知文档控件,增加对PDF文档类型的支持。
|
//AddDocTypePlugin方法参数说明:第一个参数扩展名,第二个参数ProID,第三个参数版本号,第四个参数是pdf插件相对当前网页的URL,
|
//第5个参数是文档类型标识,第6个参数是是否自动下载插件dll,当设定为自动下载时,会比较当前客户机安装的版本,如果比第3个参数
|
//指定的版本底,或者客户机没有安装,会自动下载并注册插件dll。
|
OFFICE_CONTROL_OBJ.AddDocTypePlugin(".pdf", "PDF.NtkoDocument", "4.0.2.0", "officecontrol/ntkooledocall.cab", 51, true);
|
OFFICE_CONTROL_OBJ.FileNew = false;
|
OFFICE_CONTROL_OBJ.FileOpen = false;
|
OFFICE_CONTROL_OBJ.FileClose = false;
|
|
initCustomMenus();
|
NTKO_OCX_OpenDoc(fileUrl);
|
|
canEditAttach = isSave;
|
setFileSave(canEditAttach);
|
|
if (window.parent) {
|
window.parent.mainBodyObj = OFFICE_CONTROL_OBJ;//当editDoc初始化时,将文档对象给workflow.jsp
|
}
|
}
|
|
function onPageClose() {
|
if (!OFFICE_CONTROL_OBJ.activeDocument.saved) {
|
if (confirm("文档修改过,还没有保存,是否需要保存?")) {
|
saveFileToUrl();
|
}
|
}
|
}
|
|
function NTKO_OCX_OpenDoc(fileUrl) {
|
OFFICE_CONTROL_OBJ.BeginOpenFromURL(fileUrl);
|
}
|
|
function setFileOpenedOrClosed(bool) {
|
IsFileOpened = bool;
|
fileType = OFFICE_CONTROL_OBJ.DocType;
|
}
|
|
function trim(str) { //删除左右两端的空格
|
return str.replace(/(^\s*)|(\s*$)/g, "");
|
}
|
|
function ntkosavetourl(type, code, html) {
|
|
//alert("SaveToURL成功回调");
|
console.log("ntkosavetourl type:" + type);
|
console.log("ntkosavetourl code:" + code);
|
console.log("ntkosavetourl html:" + html);
|
|
var retObj = JSON.parse(html);
|
|
if (retObj.success != null && retObj.success == true && retObj.result != null && retObj.result.attachId) {
|
|
if (window.parent.addAttachFun) {
|
window.parent.addAttachFun(retObj.result);
|
}
|
|
attachId = retObj.result.attachId;
|
}
|
|
//判断是否有延时对象,有则回调
|
if (deferred) {
|
if (retObj != null) {
|
if (retObj.success) {
|
deferred.resolve(retObj.result);
|
} else {
|
var msg = "保存失败";
|
if (retObj.errorInfo && retObj.errorInfo.message) {
|
msg = retObj.errorInfo.message;
|
}
|
|
deferred.reject(msg);
|
}
|
}
|
}
|
}
|
|
function saveFileToUrl() {
|
var myUrl = document.forms[0].action;
|
if (attachId != null) {
|
myUrl += "&attachId=" + attachId;
|
}
|
console.log("saveUrl:" + myUrl);
|
var result;
|
if (IsFileOpened) {
|
switch (OFFICE_CONTROL_OBJ.doctype) {
|
case 1:
|
fileType = "Word.Document";
|
break;
|
case 2:
|
fileType = "Excel.Sheet";
|
break;
|
case 3:
|
fileType = "PowerPoint.Show";
|
break;
|
case 4:
|
fileType = "Visio.Drawing";
|
break;
|
case 5:
|
fileType = "MSProject.Project";
|
break;
|
case 6:
|
fileType = "WPS Doc";
|
break;
|
case 7:
|
fileType = "Kingsoft Sheet";
|
break;
|
default :
|
fileType = "unkownfiletype";
|
}
|
result = OFFICE_CONTROL_OBJ.saveToURL(myUrl,//提交到的url地址
|
"file",//文件域的id,类似<input type=file id=upLoadFile 中的id
|
"fileType=" + fileType, //与控件一起提交的参数如:"p1=a&p2=b&p3=c"
|
fileName, //上传文件的名称,类似<input type=file 的value
|
0 //与控件一起提交的表单id,也可以是form的序列号,这里应该是0.
|
);
|
|
OFFICE_CONTROL_OBJ.activeDocument.saved = true;
|
return result;
|
}
|
}
|
|
function saveFileAsHtmlToUrl() {
|
var myUrl = "upLoadHtmlFile.jsp";
|
var htmlFileName = document.all("fileName").value + ".html";
|
var result;
|
if (IsFileOpened) {
|
result = OFFICE_CONTROL_OBJ.PublishAsHTMLToURL("upLoadHtmlFile.jsp", "uploadHtml", "htmlFileName=" + htmlFileName, htmlFileName);
|
result = trim(result);
|
document.all("statusBar").innerHTML = "服务器返回信息:" + result;
|
alert(result);
|
window.close();
|
}
|
}
|
|
function saveFileAsPdfToUrl() {
|
var myUrl = "upLoadPdfFile.jsp";
|
var pdfFileName = document.all("fileName").value + ".pdf";
|
if (IsFileOpened) {
|
OFFICE_CONTROL_OBJ.PublishAsPdfToURL(myUrl, "uploadPdf", "PdfFileName=" + pdfFileName, pdfFileName, "", "", true, false);
|
}
|
}
|
|
function testFunction() {
|
alert(IsFileOpened);
|
}
|
|
function addServerSecSign() {
|
var signUrl = document.all("secSignFileUrl").options[document.all("secSignFileUrl").selectedIndex].value;
|
if (IsFileOpened) {
|
if (OFFICE_CONTROL_OBJ.doctype == 1 || OFFICE_CONTROL_OBJ.doctype == 2) {
|
try {
|
alert("正式版本用户请插入EKEY!\r\n\r\n此为电子印章系统演示功能,请购买正式版本!");
|
OFFICE_CONTROL_OBJ.AddSecSignFromURL("ntko", signUrl);
|
} catch (error) {
|
}
|
} else {
|
alert("不能在该类型文档中使用安全签名印章.");
|
}
|
}
|
}
|
|
function addLocalSecSign() {
|
if (IsFileOpened) {
|
if (OFFICE_CONTROL_OBJ.doctype == 1 || OFFICE_CONTROL_OBJ.doctype == 2) {
|
try {
|
OFFICE_CONTROL_OBJ.AddSecSignFromLocal("ntko", "");
|
} catch (error) {
|
}
|
} else {
|
alert("不能在该类型文档中使用安全签名印章.");
|
}
|
}
|
}
|
|
function addEkeySecSign() {
|
if (IsFileOpened) {
|
if (OFFICE_CONTROL_OBJ.doctype == 1 || OFFICE_CONTROL_OBJ.doctype == 2) {
|
try {
|
OFFICE_CONTROL_OBJ.AddSecSignFromEkey("ntko");
|
} catch (error) {
|
}
|
} else {
|
alert("不能在该类型文档中使用安全签名印章.");
|
}
|
}
|
}
|
|
function addHandSecSign() {
|
if (IsFileOpened) {
|
if (OFFICE_CONTROL_OBJ.doctype == 1 || OFFICE_CONTROL_OBJ.doctype == 2) {
|
try {
|
OFFICE_CONTROL_OBJ.AddSecHandSign("ntko");
|
} catch (error) {
|
}
|
} else {
|
alert("不能在该类型文档中使用安全签名印章.");
|
}
|
}
|
}
|
|
function addServerSign(signUrl) {
|
if (IsFileOpened) {
|
try {
|
OFFICE_CONTROL_OBJ.AddSignFromURL("ntko",//印章的用户名
|
signUrl,//印章所在服务器相对url
|
100,//左边距
|
100,//上边距 根据Relative的设定选择不同参照对象
|
"ntko",//调用DoCheckSign函数签名印章信息,用来验证印章的字符串
|
3, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落
|
100,//缩放印章,默认100%
|
1); //0印章位于文字下方,1位于上方
|
|
} catch (error) {
|
}
|
}
|
}
|
|
function addLocalSign() {
|
if (IsFileOpened) {
|
try {
|
OFFICE_CONTROL_OBJ.AddSignFromLocal("ntko",//印章的用户名
|
"",//缺省文件名
|
true,//是否提示选择
|
100,//左边距
|
100,//上边距 根据Relative的设定选择不同参照对象
|
"ntko",//调用DoCheckSign函数签名印章信息,用来验证印章的字符串
|
3, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落
|
100,//缩放印章,默认100%
|
1); //0印章位于文字下方,1位于上方
|
} catch (error) {
|
}
|
}
|
}
|
|
function addPicFromUrl(picURL) {
|
if (IsFileOpened) {
|
if (OFFICE_CONTROL_OBJ.doctype == 1 || OFFICE_CONTROL_OBJ.doctype == 2) {
|
try {
|
OFFICE_CONTROL_OBJ.AddPicFromURL(picURL,//图片的url地址可以时相对或者绝对地址
|
false,//是否浮动,此参数设置为false时,top和left无效
|
100,//left 左边距
|
100,//top 上边距 根据Relative的设定选择不同参照对象
|
1, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落
|
100,//缩放印章,默认100%
|
1); //0印章位于文字下方,1位于上方
|
|
} catch (error) {
|
}
|
} else {
|
alert("不能在该类型文档中使用安全签名印章.");
|
}
|
}
|
}
|
|
function addPicFromLocal() {
|
if (IsFileOpened) {
|
try {
|
OFFICE_CONTROL_OBJ.AddPicFromLocal("",//印章的用户名
|
true,//缺省文件名
|
false,//是否提示选择
|
100,//左边距
|
100,//上边距 根据Relative的设定选择不同参照对象
|
1, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落
|
100,//缩放印章,默认100%
|
1); //0印章位于文字下方,1位于上方
|
} catch (error) {
|
}
|
}
|
}
|
|
function TANGER_OCX_AddDocHeader(strHeader) {
|
if (!IsFileOpened) {
|
return;
|
}
|
var i, cNum = 30;
|
var lineStr = "";
|
try {
|
for (i = 0; i < cNum; i++) lineStr += "_"; //生成下划线
|
with (OFFICE_CONTROL_OBJ.ActiveDocument.Application) {
|
Selection.HomeKey(6, 0); // go home
|
Selection.TypeText(strHeader);
|
Selection.TypeParagraph(); //换行
|
Selection.TypeText(lineStr); //插入下划线
|
// Selection.InsertSymbol(95,"",true); //插入下划线
|
Selection.TypeText("★");
|
Selection.TypeText(lineStr); //插入下划线
|
Selection.TypeParagraph();
|
//Selection.MoveUp(5, 2, 1); //上移两行,且按住Shift键,相当于选择两行
|
Selection.HomeKey(6, 1); //选择到文件头部所有文本
|
Selection.ParagraphFormat.Alignment = 1; //居中对齐
|
with (Selection.Font) {
|
NameFarEast = "宋体";
|
Name = "宋体";
|
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); //下移3行
|
}
|
} catch (err) {
|
alert("错误:" + err.number + ":" + err.description);
|
} finally {
|
}
|
}
|
|
//插入红头文件
|
function insertRedHeadFromUrl(headFileURL) {
|
if (OFFICE_CONTROL_OBJ.doctype != 1)//OFFICE_CONTROL_OBJ.doctype=1为word文档
|
{
|
return;
|
}
|
OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.HomeKey(6, 0);//光标移动到文档开头
|
OFFICE_CONTROL_OBJ.addtemplatefromurl(headFileURL);//在光标位置插入红头文档
|
}
|
|
//打开模板文件
|
function openTemplateFileFromUrl(templateUrl) {
|
OFFICE_CONTROL_OBJ.openFromUrl(templateUrl);
|
}
|
|
//同步书签数据
|
function syncBookmarkData() {
|
if (window.parent && window.parent.getBookmarkData) {
|
var bookmarks = window.parent.getBookmarkData();
|
|
bookmarks.forEach(function (value, key) {
|
console.log(value, key);
|
copyTextToBookMark(value, key);
|
});
|
}
|
}
|
|
function doHandSign() {
|
/*if(OFFICE_CONTROL_OBJ.doctype==1||OFFICE_CONTROL_OBJ.doctype==2)//此处设置只允许在word和excel中盖章.doctype=1是"word"文档,doctype=2是"excel"文档
|
{*/
|
OFFICE_CONTROL_OBJ.DoHandSign2(
|
"ntko",//手写签名用户名称
|
"ntko",//signkey,DoCheckSign(检查印章函数)需要的验证密钥。
|
0,//left
|
0,//top
|
1,//relative,设定签名位置的参照对象.0:表示按照屏幕位置插入,此时,Left,Top属性不起作用。1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落(为兼容以前版本默认方式)
|
100);
|
//}
|
}
|
|
function setReviewMode(boolvalue) {
|
if (OFFICE_CONTROL_OBJ.doctype == 1) {
|
OFFICE_CONTROL_OBJ.ActiveDocument.TrackRevisions = boolvalue;//设置是否保留痕迹
|
}
|
}
|
|
function setShowRevisions(boolevalue) {
|
if (OFFICE_CONTROL_OBJ.doctype == 1) {
|
OFFICE_CONTROL_OBJ.ActiveDocument.ShowRevisions = boolevalue;//设置是否显示痕迹
|
}
|
}
|
|
function setFilePrint(boolvalue) {
|
OFFICE_CONTROL_OBJ.fileprint = boolvalue;//是否允许打印
|
}
|
|
function setFileNew(boolvalue) {
|
OFFICE_CONTROL_OBJ.FileNew = boolvalue;//是否允许新建
|
}
|
|
function setFileSave(boolvalue) {
|
OFFICE_CONTROL_OBJ.FileSave = boolvalue;//是否允许保存
|
}
|
|
function setFileSaveAs(boolvalue) {
|
OFFICE_CONTROL_OBJ.FileSaveAs = boolvalue;//是否允许另存为
|
}
|
|
function setIsNoCopy(boolvalue) {
|
OFFICE_CONTROL_OBJ.IsNoCopy = boolvalue;//是否禁止粘贴
|
}
|
|
//验证文档控件自带印章功能盖的章
|
function DoCheckSign() {
|
if (IsFileOpened) {
|
var ret = OFFICE_CONTROL_OBJ.DoCheckSign
|
(
|
false,/*可选参数 IsSilent 缺省为FAlSE,表示弹出验证对话框,否则,只是返回验证结果到返回值*/
|
"ntko"//使用盖章时的signkey,这里为"ntko"
|
);//返回值,验证结果字符串
|
//alert(ret);
|
}
|
}
|
|
//设置工具栏
|
function setToolBar() {
|
OFFICE_CONTROL_OBJ.ToolBars = !OFFICE_CONTROL_OBJ.ToolBars;
|
}
|
|
//控制是否显示所有菜单
|
function setMenubar() {
|
OFFICE_CONTROL_OBJ.Menubar = !OFFICE_CONTROL_OBJ.Menubar;
|
}
|
|
//控制”插入“菜单栏
|
function setInsertMemu() {
|
OFFICE_CONTROL_OBJ.IsShowInsertMenu = !OFFICE_CONTROL_OBJ.IsShowInsertMenu;
|
}
|
|
//控制”编辑“菜单栏
|
function setEditMenu() {
|
OFFICE_CONTROL_OBJ.IsShowEditMenu = !OFFICE_CONTROL_OBJ.IsShowEditMenu;
|
}
|
|
//控制”工具“菜单栏
|
function setToolMenu() {
|
OFFICE_CONTROL_OBJ.IsShowToolMenu = !OFFICE_CONTROL_OBJ.IsShowToolMenu;
|
}
|
|
//自定义菜单功能函数
|
function initCustomMenus() {
|
var myobj = OFFICE_CONTROL_OBJ;
|
myobj.AddCustomMenu2(0, " 模板 ");
|
if (canApplyTemplate == false || templateList.length == 0) {
|
myobj.EnableCustomMenuItem2(0, -1, -1, false);
|
} else {
|
for (var i = 0; i < templateList.length; i++) {
|
myobj.AddCustomMenuItem2(0, i, -1, false, templateList[i].physicalName, false);
|
}
|
}
|
myobj.AddCustomButtonOnMenu(1, " 套红 ", true);
|
myobj.AddCustomButtonOnMenu(2, " 同步 ", true);
|
}
|
|
//复制内容到书签
|
function copyTextToBookMark(inputValue, BookMarkName) {
|
try {
|
console.log("inputValue:", inputValue);
|
console.log("BookMarkName:", BookMarkName);
|
console.log("instanceof1:", inputValue.constructor == Array);
|
if (!inputValue) {
|
inputValue = "";
|
}
|
//去掉form里的换行符
|
while (inputValue.indexOf("
") > 0) {
|
inputValue = inputValue.replace("
", "");
|
}
|
|
var realValue = inputValue.toString();
|
|
console.log("inputValue.toString:", realValue);
|
//do copy
|
//DEBUG
|
if (OFFICE_CONTROL_OBJ == null)//当为空时,是workflow调用的,使用objtest
|
OFFICE_CONTROL_OBJ = objDoc;
|
if (OFFICE_CONTROL_OBJ != null) {
|
if (OFFICE_CONTROL_OBJ.ActiveDocument.Bookmarks.Exists(BookMarkName)) {
|
|
OFFICE_CONTROL_OBJ.SetBookmarkValue(BookMarkName, realValue);
|
|
/*var bkmkObj = OFFICE_CONTROL_OBJ.ActiveDocument.BookMarks(BookMarkName);
|
if(bkmkObj) {
|
var saverange = bkmkObj.Range;
|
saverange.Text = inputValue;
|
if(wfwin.workflowName == "SendAdminLetterProcess" && siteId == "HQ" && BookMarkName == "发文编号") {
|
saverange.Font.Name = "仿宋_GB2312";
|
saverange.Font.NameFarEast = "仿宋_GB2312";
|
}
|
OFFICE_CONTROL_OBJ.ActiveDocument.Bookmarks.Add(BookMarkName,saverange);
|
}*/
|
|
} else {
|
OFFICE_CONTROL_OBJ.ShowTipMessage("同步提示", "未找到书签:" + BookMarkName);
|
//alert("未找到书签:" + BookMarkName);
|
}
|
}
|
} catch (err) {
|
/*alert("同步字段时发生错误(书签名称=" + BookMarkName + ",值=" + inputValue + "),错误原因:" + err);*/
|
console.log("同步字段时发生错误(书签名称=" + BookMarkName + ",值=" + inputValue + "),错误原因:" + err);
|
} finally {
|
}
|
}
|