OfficeControlFunctions.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. var OFFICE_CONTROL_OBJ;//控件对象
  2. var IsFileOpened; //控件是否打开文档
  3. var fileType ;
  4. var fileTypeSimple;
  5. function intializePage(fileUrl)
  6. {
  7. OFFICE_CONTROL_OBJ = document.all("TANGER_OCX");
  8. initCustomMenus();
  9. NTKO_OCX_OpenDoc(fileUrl);
  10. }
  11. function onPageClose()
  12. {
  13. if(!OFFICE_CONTROL_OBJ.activeDocument.saved)
  14. {
  15. if(confirm( "文档修改过,还没有保存,是否需要保存?"))
  16. {
  17. saveFileToUrl();
  18. }
  19. }
  20. }
  21. function NTKO_OCX_OpenDoc(fileUrl)
  22. {
  23. OFFICE_CONTROL_OBJ.BeginOpenFromURL(fileUrl);
  24. }
  25. function setFileOpenedOrClosed(bool)
  26. {
  27. IsFileOpened = bool;
  28. fileType = OFFICE_CONTROL_OBJ.DocType ;
  29. }
  30. function trim(str)
  31. { //删除左右两端的空格
  32.   return str.replace(/(^\s*)|(\s*$)/g, "");
  33. }
  34. function saveFileToUrl()
  35. {
  36. var myUrl =document.forms[0].action ;
  37. var fileName = document.all("fileName").value;
  38. var result ;
  39. if(IsFileOpened)
  40. {
  41. switch (OFFICE_CONTROL_OBJ.doctype)
  42. {
  43. case 1:
  44. fileType = "Word.Document";
  45. break;
  46. case 2:
  47. fileType = "Excel.Sheet";
  48. break;
  49. case 3:
  50. fileType = "PowerPoint.Show";
  51. break;
  52. case 4:
  53. fileType = "Visio.Drawing";
  54. break;
  55. case 5:
  56. fileType = "MSProject.Project";
  57. break;
  58. case 6:
  59. fileType = "WPS Doc";
  60. break;
  61. case 7:
  62. fileType = "Kingsoft Sheet";
  63. break;
  64. default :
  65. fileType = "unkownfiletype";
  66. }
  67. result = OFFICE_CONTROL_OBJ.saveToURL(myUrl,//提交到的url地址
  68. "uploadFile",//文件域的id,类似<input type=file id=upLoadFile 中的id
  69. "fileType="+fileType, //与控件一起提交的参数如:"p1=a&p2=b&p3=c"
  70. fileName, //上传文件的名称,类似<input type=file 的value
  71. 0 //与控件一起提交的表单id,也可以是form的序列号,这里应该是0.
  72. );
  73. result=trim(result);
  74. document.all("statusBar").innerHTML="服务器返回信息:"+result;
  75. alert(result);
  76. window.close();
  77. }
  78. }
  79. function saveFileAsHtmlToUrl()
  80. {
  81. var myUrl = "upLoadHtmlFile.jsp" ;
  82. var htmlFileName = document.all("fileName").value+".html";
  83. var result;
  84. if(IsFileOpened)
  85. {
  86. result=OFFICE_CONTROL_OBJ.PublishAsHTMLToURL("upLoadHtmlFile.jsp","uploadHtml","htmlFileName="+htmlFileName,htmlFileName);
  87. result=trim(result);
  88. document.all("statusBar").innerHTML="服务器返回信息:"+result;
  89. alert(result);
  90. window.close();
  91. }
  92. }
  93. function saveFileAsPdfToUrl()
  94. {
  95. var myUrl = "upLoadPdfFile.jsp" ;
  96. var pdfFileName = document.all("fileName").value+".pdf";
  97. if(IsFileOpened)
  98. {
  99. OFFICE_CONTROL_OBJ.PublishAsPdfToURL(myUrl,"uploadPdf","PdfFileName="+pdfFileName,pdfFileName,"","",true,false);
  100. }
  101. }
  102. function testFunction()
  103. {
  104. alert(IsFileOpened);
  105. }
  106. function addServerSecSign()
  107. {
  108. var signUrl=document.all("secSignFileUrl").options[document.all("secSignFileUrl").selectedIndex].value;
  109. if(IsFileOpened)
  110. {
  111. if(OFFICE_CONTROL_OBJ.doctype==1||OFFICE_CONTROL_OBJ.doctype==2)
  112. {
  113. try
  114. {
  115. alert("正式版本用户请插入EKEY!\r\n\r\n此为电子印章系统演示功能,请购买正式版本!");
  116. OFFICE_CONTROL_OBJ.AddSecSignFromURL("ntko",signUrl);
  117. }
  118. catch(error){}
  119. }
  120. else
  121. {alert("不能在该类型文档中使用安全签名印章.");}
  122. }
  123. }
  124. function addLocalSecSign()
  125. {
  126. if(IsFileOpened)
  127. {
  128. if(OFFICE_CONTROL_OBJ.doctype==1||OFFICE_CONTROL_OBJ.doctype==2)
  129. {
  130. try
  131. {OFFICE_CONTROL_OBJ.AddSecSignFromLocal("ntko","");}
  132. catch(error){}
  133. }
  134. else
  135. {alert("不能在该类型文档中使用安全签名印章.");}
  136. }
  137. }
  138. function addEkeySecSign()
  139. {
  140. if(IsFileOpened)
  141. {
  142. if(OFFICE_CONTROL_OBJ.doctype==1||OFFICE_CONTROL_OBJ.doctype==2)
  143. {
  144. try
  145. {OFFICE_CONTROL_OBJ.AddSecSignFromEkey("ntko");}
  146. catch(error){}
  147. }
  148. else
  149. {alert("不能在该类型文档中使用安全签名印章.");}
  150. }
  151. }
  152. function addHandSecSign()
  153. {
  154. if(IsFileOpened)
  155. {
  156. if(OFFICE_CONTROL_OBJ.doctype==1||OFFICE_CONTROL_OBJ.doctype==2)
  157. {
  158. try
  159. {OFFICE_CONTROL_OBJ.AddSecHandSign("ntko");}
  160. catch(error){}
  161. }
  162. else
  163. {alert("不能在该类型文档中使用安全签名印章.");}
  164. }
  165. }
  166. function addServerSign(signUrl)
  167. {
  168. if(IsFileOpened)
  169. {
  170. try
  171. {
  172. OFFICE_CONTROL_OBJ.AddSignFromURL("ntko",//印章的用户名
  173. signUrl,//印章所在服务器相对url
  174. 100,//左边距
  175. 100,//上边距 根据Relative的设定选择不同参照对象
  176. "ntko",//调用DoCheckSign函数签名印章信息,用来验证印章的字符串
  177. 3, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落
  178. 100,//缩放印章,默认100%
  179. 1); //0印章位于文字下方,1位于上方
  180. }
  181. catch(error){}
  182. }
  183. }
  184. function addLocalSign()
  185. {
  186. if(IsFileOpened)
  187. {
  188. try
  189. {
  190. OFFICE_CONTROL_OBJ.AddSignFromLocal("ntko",//印章的用户名
  191. "",//缺省文件名
  192. true,//是否提示选择
  193. 100,//左边距
  194. 100,//上边距 根据Relative的设定选择不同参照对象
  195. "ntko",//调用DoCheckSign函数签名印章信息,用来验证印章的字符串
  196. 3, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落
  197. 100,//缩放印章,默认100%
  198. 1); //0印章位于文字下方,1位于上方
  199. }
  200. catch(error){}
  201. }
  202. }
  203. function addPicFromUrl(picURL)
  204. {
  205. if(IsFileOpened)
  206. {
  207. if(OFFICE_CONTROL_OBJ.doctype==1||OFFICE_CONTROL_OBJ.doctype==2)
  208. {
  209. try
  210. {
  211. OFFICE_CONTROL_OBJ.AddPicFromURL(picURL,//图片的url地址可以时相对或者绝对地址
  212. false,//是否浮动,此参数设置为false时,top和left无效
  213. 100,//left 左边距
  214. 100,//top 上边距 根据Relative的设定选择不同参照对象
  215. 1, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落
  216. 100,//缩放印章,默认100%
  217. 1); //0印章位于文字下方,1位于上方
  218. }
  219. catch(error){}
  220. }
  221. else
  222. {alert("不能在该类型文档中使用安全签名印章.");}
  223. }
  224. }
  225. function addPicFromLocal()
  226. {
  227. if(IsFileOpened)
  228. {
  229. try
  230. {
  231. OFFICE_CONTROL_OBJ.AddPicFromLocal("",//印章的用户名
  232. true,//缺省文件名
  233. false,//是否提示选择
  234. 100,//左边距
  235. 100,//上边距 根据Relative的设定选择不同参照对象
  236. 1, //Relative,取值1-4。设置左边距和上边距相对以下对象所在的位置 1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落
  237. 100,//缩放印章,默认100%
  238. 1); //0印章位于文字下方,1位于上方
  239. }
  240. catch(error){}
  241. }
  242. }
  243. function TANGER_OCX_AddDocHeader(strHeader)
  244. {
  245. if(!IsFileOpened)
  246. {return;}
  247. var i,cNum = 30;
  248. var lineStr = "";
  249. try
  250. {
  251. for(i=0;i<cNum;i++) lineStr += "_"; //生成下划线
  252. with(OFFICE_CONTROL_OBJ.ActiveDocument.Application)
  253. {
  254. Selection.HomeKey(6,0); // go home
  255. Selection.TypeText(strHeader);
  256. Selection.TypeParagraph(); //换行
  257. Selection.TypeText(lineStr); //插入下划线
  258. // Selection.InsertSymbol(95,"",true); //插入下划线
  259. Selection.TypeText("★");
  260. Selection.TypeText(lineStr); //插入下划线
  261. Selection.TypeParagraph();
  262. //Selection.MoveUp(5, 2, 1); //上移两行,且按住Shift键,相当于选择两行
  263. Selection.HomeKey(6,1); //选择到文件头部所有文本
  264. Selection.ParagraphFormat.Alignment = 1; //居中对齐
  265. with(Selection.Font)
  266. {
  267. NameFarEast = "宋体";
  268. Name = "宋体";
  269. Size = 12;
  270. Bold = false;
  271. Italic = false;
  272. Underline = 0;
  273. UnderlineColor = 0;
  274. StrikeThrough = false;
  275. DoubleStrikeThrough = false;
  276. Outline = false;
  277. Emboss = false;
  278. Shadow = false;
  279. Hidden = false;
  280. SmallCaps = false;
  281. AllCaps = false;
  282. Color = 255;
  283. Engrave = false;
  284. Superscript = false;
  285. Subscript = false;
  286. Spacing = 0;
  287. Scaling = 100;
  288. Position = 0;
  289. Kerning = 0;
  290. Animation = 0;
  291. DisableCharacterSpaceGrid = false;
  292. EmphasisMark = 0;
  293. }
  294. Selection.MoveDown(5, 3, 0); //下移3行
  295. }
  296. }
  297. catch(err){
  298. alert("错误:" + err.number + ":" + err.description);
  299. }
  300. finally{
  301. }
  302. }
  303. function insertRedHeadFromUrl(headFileURL)
  304. {
  305. if(OFFICE_CONTROL_OBJ.doctype!=1)//OFFICE_CONTROL_OBJ.doctype=1为word文档
  306. {return;}
  307. OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.HomeKey(6,0);//光标移动到文档开头
  308. OFFICE_CONTROL_OBJ.addtemplatefromurl(headFileURL);//在光标位置插入红头文档
  309. }
  310. function openTemplateFileFromUrl(templateUrl)
  311. {
  312. OFFICE_CONTROL_OBJ.openFromUrl(templateUrl);
  313. }
  314. function doHandSign()
  315. {
  316. /*if(OFFICE_CONTROL_OBJ.doctype==1||OFFICE_CONTROL_OBJ.doctype==2)//此处设置只允许在word和excel中盖章.doctype=1是"word"文档,doctype=2是"excel"文档
  317. {*/
  318. OFFICE_CONTROL_OBJ.DoHandSign2(
  319. "ntko",//手写签名用户名称
  320. "ntko",//signkey,DoCheckSign(检查印章函数)需要的验证密钥。
  321. 0,//left
  322. 0,//top
  323. 1,//relative,设定签名位置的参照对象.0:表示按照屏幕位置插入,此时,Left,Top属性不起作用。1:光标位置;2:页边距;3:页面距离 4:默认设置栏,段落(为兼容以前版本默认方式)
  324. 100);
  325. //}
  326. }
  327. function SetReviewMode(boolvalue)
  328. {
  329. if(OFFICE_CONTROL_OBJ.doctype==1)
  330. {
  331. OFFICE_CONTROL_OBJ.ActiveDocument.TrackRevisions = boolvalue;//设置是否保留痕迹
  332. }
  333. }
  334. function setShowRevisions(boolevalue)
  335. {
  336. if(OFFICE_CONTROL_OBJ.doctype==1)
  337. {
  338. OFFICE_CONTROL_OBJ.ActiveDocument.ShowRevisions =boolevalue;//设置是否显示痕迹
  339. }
  340. }
  341. function setFilePrint(boolvalue)
  342. {
  343. OFFICE_CONTROL_OBJ.fileprint=boolvalue;//是否允许打印
  344. }
  345. function setFileNew(boolvalue)
  346. {
  347. OFFICE_CONTROL_OBJ.FileNew=boolvalue;//是否允许新建
  348. }
  349. function setFileSaveAs(boolvalue)
  350. {
  351. OFFICE_CONTROL_OBJ.FileSaveAs=boolvalue;//是否允许另存为
  352. }
  353. function setIsNoCopy(boolvalue)
  354. {
  355. OFFICE_CONTROL_OBJ.IsNoCopy=boolvalue;//是否禁止粘贴
  356. }
  357. //验证文档控件自带印章功能盖的章
  358. function DoCheckSign()
  359. {
  360. if(IsFileOpened)
  361. {
  362. var ret = OFFICE_CONTROL_OBJ.DoCheckSign
  363. (
  364. false,/*可选参数 IsSilent 缺省为FAlSE,表示弹出验证对话框,否则,只是返回验证结果到返回值*/
  365. "ntko"//使用盖章时的signkey,这里为"ntko"
  366. );//返回值,验证结果字符串
  367. //alert(ret);
  368. }
  369. }
  370. //设置工具栏
  371. function setToolBar()
  372. {
  373. OFFICE_CONTROL_OBJ.ToolBars=!OFFICE_CONTROL_OBJ.ToolBars;
  374. }
  375. //控制是否显示所有菜单
  376. function setMenubar()
  377. {
  378. OFFICE_CONTROL_OBJ.Menubar=!OFFICE_CONTROL_OBJ.Menubar;
  379. }
  380. //控制”插入“菜单栏
  381. function setInsertMemu()
  382. {
  383. OFFICE_CONTROL_OBJ.IsShowInsertMenu=!OFFICE_CONTROL_OBJ.IsShowInsertMenu;
  384. }
  385. //控制”编辑“菜单栏
  386. function setEditMenu()
  387. {
  388. OFFICE_CONTROL_OBJ.IsShowEditMenu=!OFFICE_CONTROL_OBJ.IsShowEditMenu;
  389. }
  390. //控制”工具“菜单栏
  391. function setToolMenu()
  392. {
  393. OFFICE_CONTROL_OBJ.IsShowToolMenu=!OFFICE_CONTROL_OBJ.IsShowToolMenu;
  394. }
  395. //自定义菜单功能函数
  396. function initCustomMenus()
  397. {
  398. var myobj = OFFICE_CONTROL_OBJ;
  399. for(var menuPos=0;menuPos<3;menuPos++)
  400. {
  401. myobj.AddCustomMenu2(menuPos,"菜单"+menuPos+"(&"+menuPos+")");
  402. for(var submenuPos=0;submenuPos<10;submenuPos++)
  403. {
  404. if(1 ==(submenuPos % 3)) //主菜单增加分隔符。第3个参数是-1是在主菜单增加
  405. {
  406. myobj.AddCustomMenuItem2(menuPos,submenuPos,-1,false,"-",true);
  407. }
  408. else if(0 == (submenuPos % 2)) //主菜单增加子菜单,第3个参数是-1是在主菜单增加
  409. {
  410. myobj.AddCustomMenuItem2(menuPos,submenuPos,-1,true,"子菜单"+menuPos+"-"+submenuPos,false);
  411. //增加子菜单项目
  412. for(var subsubmenuPos=0;subsubmenuPos<9;subsubmenuPos++)
  413. {
  414. if(0 == (subsubmenuPos % 2))//增加子菜单项目
  415. {
  416. myobj.AddCustomMenuItem2(menuPos,submenuPos,subsubmenuPos,false,
  417. "子菜单项目"+menuPos+"-"+submenuPos+"-"+subsubmenuPos,false,menuPos*100+submenuPos*20+subsubmenuPos);
  418. }
  419. else //增加子菜单分隔
  420. {
  421. myobj.AddCustomMenuItem2(menuPos,submenuPos,subsubmenuPos,false,
  422. "-"+subsubmenuPos,true);
  423. }
  424. //测试禁用和启用
  425. if(2 == (subsubmenuPos % 4))
  426. {
  427. myobj.EnableCustomMenuItem2(menuPos,submenuPos,subsubmenuPos,false);
  428. }
  429. }
  430. }
  431. else //主菜单增加项目,第3个参数是-1是在主菜单增加
  432. {
  433. myobj.AddCustomMenuItem2(menuPos,submenuPos,-1,false,"菜单项目"+menuPos+"-"+submenuPos,false,menuPos*100+submenuPos);
  434. }
  435. //测试禁用和启用
  436. if(1 == (submenuPos % 4))
  437. {
  438. myobj.EnableCustomMenuItem2(menuPos,submenuPos,-1,false);
  439. }
  440. }
  441. }
  442. }