You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1062 lines
383 KiB

2 weeks ago
  1. var windowName = ""; //控件窗口ID
  2. window.onload = function () {
  3. var g_PlatForm = PlatForm(); //判断平台;
  4. windowName = document.title + new Date().getTime(); //控件窗口ID 默认title+时间戳
  5. if (g_PlatForm == "Linux") { // MOD Linux下识别浏览器上的标签页进行嵌入如果多个标签页名字相同会发生随机document.title
  6. windowName = document.title;
  7. }
  8. }
  9. /*封装函数*/
  10. /****************************************************************************************************
  11. 方法名PlatForm 判断平台;
  12. *****************************************************************************************************/
  13. function PlatForm() {
  14. var _platform = navigator.platform;
  15. var isWin = (_platform == "Win32" || _platform == "Windows");
  16. var isMac = (_platform == "Mac68K" || _platform == "MacPPC" || _platform == "Macintosh" || _platform == "MacIntel");
  17. var isUnix = (_platform == "X11") && !isWin && !isMac;
  18. var isLinux = (_platform.indexOf("Linux") > -1);
  19. if (isMac)
  20. return "MacOS";
  21. if (isUnix)
  22. return "Unix";
  23. if (isLinux)
  24. return "Linux";
  25. if (isWin)
  26. return "Windows";
  27. return "";
  28. }
  29. /****************************************************************************************************
  30. 方法名setDispidShowWndLevel 设置窗口层级是否可用关闭按钮打开窗口
  31. *****************************************************************************************************/
  32. async function showAipWnd(p1) {
  33. if (PlatForm() == "Windows") {
  34. await SetShowDefMenu(0, "", "", "", "");//隐藏菜单
  35. await SetShowToolBar(2, "", "", "", "");//工具栏显示大图标
  36. await HideMenuItem(10, "", "", "", "");//调用这个接口可以隐藏打开、新建
  37. await disidSetShowScrollBarButton(1, "", "", "", "");//接口隐藏状态栏
  38. }
  39. var level = await SetDispidShowWndLevel(1, '', '', '', '');
  40. var closebtn = await dispidEnableCloseBtn(1, '', '', '', '');
  41. var showaip = await ShowAipWnd(p1, 50, 50, '', '', '', '');
  42. }
  43. //测试是否进入异步方法
  44. function test(data) {
  45. console.log("异步" + data);
  46. }
  47. async function hideAipWnd() {
  48. await HideAipWnd('', '', '', '');//隐藏窗口
  49. await CloseDoc(0, '', '', '', ''); //关闭文档
  50. // dispidExitApp('','','','');//杀进程
  51. };
  52. async function DispidExitApp() {
  53. if (PlatForm() == "Linux") {
  54. await ExitApp_Linux("", "", "", "");
  55. return;
  56. }
  57. await dispidExitApp("", "", "");
  58. }
  59. async function DispidReopenApp(p1) {
  60. if (PlatForm() == "Linux") {
  61. await ReopenApp_Linux("", "", "", "");
  62. return;
  63. }
  64. await dispidReopenApp(p1, "", "", "", "");//快速重启进程
  65. }
  66. /****************************************************************************************************
  67. 方法名OpenFile 打开文档
  68. url 可以是服务器http路径http://127.0.0.1/test.pdf
  69. 也可以是本地文件路径c://test.pdf
  70. 也可以是文件流http://127.0.0.1/GetFile.aspx
  71. *****************************************************************************************************/
  72. async function OpenFile(url) {
  73. await showAipWnd(9);
  74. var IsOpen = await LoadFile(url, "", "", "", "");
  75. console.log("IsOpen:" + IsOpen);
  76. //await SetPageMode(1,100,"","","","");//设置当前显示模式为自定义模式,缩放比例为100%。
  77. //console.log(1232);
  78. if (IsOpen != 1) {
  79. await ShowMessage("打开文档失败!", "提示", 0, "", "", "", "");
  80. } else {
  81. }
  82. //opneListenEvent();
  83. }
  84. /**
  85. 事件监听开启
  86. */
  87. async function opneListenEvent() {
  88. if (PlatForm() == "Linux") { //国产化监听
  89. //国产化开启事前监听
  90. // var s1=SetMonitorServEvent("17-1|<57603><57604>;","","","",""); //阻断事件
  91. // SetMonitorServEvent("17-1;","","","",""); //开启阻塞阅读器按钮事件:js重写对应按钮功能;
  92. await SetMonitorServEvent("6-1;", "", "", "", ""); //开启页面滚动监听
  93. // SetMonitorServEvent("18-1;",'','','','');
  94. var getGetMonitor = await GetMonitorServEvent(0, opneListenEventCallback, "", "", "");
  95. console.log("事件监听开启" + getGetMonitor);
  96. } else {//windows监听
  97. await SetJSEnv(1, "", "", "", "");
  98. // var env = await GetJSEnv("", "", "", "");
  99. // console.log("env:" + env);
  100. //阻断保存和另存为原有功能
  101. //var s1=SetMonitorServEvent("17-1|<57603><57604>;","","","",""); //阻断事件
  102. // var s2 = await SetMonitorServEvent("18-1;", "", "", "", "");
  103. // console.log("SetMonitorServEvent:", s2);
  104. var getGetMonitor = GetMonitorServEvent(0, opneListenEventCallback, "", "", "");
  105. console.log("事件监听开启" + getGetMonitor);
  106. }
  107. }
  108. /**
  109. 事件监听回调返回值id参考下方id对应可以看aip开发文档
  110. */
  111. const opneListenEventCallback = async function (a, b) {
  112. console.log("+++opneListenEventCallback+++:" + a);
  113. if (PlatForm() == "Linux") {
  114. var bSplitAble = a.includes(";|;");
  115. // console.log("bSplitAble:",bSplitAble);
  116. if (bSplitAble) {
  117. var arr = a.split(";|;");
  118. var bType = arr[0];
  119. if (bType == 12 || bType == 17) {
  120. var retStr = arr[1];
  121. if (retStr == "1,32817")
  122. console.log("view_zooout 放大 ");
  123. else if (retStr == "1,32818")
  124. console.log("view_zoommin 缩小");
  125. else if (retStr == "1,32885")
  126. console.log("doc_sealsign 手动盖章");
  127. else if (retStr == "1,32768")
  128. console.log("view_fullscreen 全屏");
  129. else if (retStr == "1,33011")
  130. console.log("file_saveas 另存为");
  131. else if (retStr == "1,57600")
  132. console.log("fire_createfile 新建文件");
  133. else if (retStr == "1,57601")
  134. console.log("file_open 打开文件");
  135. else if (retStr == "1,57602")
  136. console.log("file_close 文件关闭");
  137. else if (retStr == "1,57603")
  138. console.log("file_save 保存文件");
  139. else if (retStr == "1,57605")
  140. console.log("menu_view_pagelayout 页面缩放");
  141. else if (retStr == "1,57607")
  142. console.log("file_print 打印");
  143. else if (retStr == "1,57643")
  144. console.log("edit_undo 撤销");
  145. else if (retStr == "1,57644")
  146. console.log("edit_redo 重做");
  147. else if (retStr == "1,57664")
  148. console.log("help_productinfo 关于");
  149. else if (retStr == "1,60008")
  150. console.log("contextmenu_signature_property 右键印章,印章信息");
  151. else if (retStr == "1,60009")
  152. console.log("doc_verifyseal 右键印章,签名验证");
  153. else if (retStr == "1,60000")
  154. console.log("右键印章,删除印章");
  155. else
  156. console.log("undefined");
  157. }
  158. else if (bType == 22) {
  159. var retStr = arr[1].split(",");
  160. var beforeType = retStr[0];
  161. if (beforeType == "1008") {
  162. console.log("编辑区:", retStr[1], "被点击!");
  163. }
  164. }
  165. }
  166. else {
  167. var obj = JSON.parse(a);
  168. if (typeof obj == 'object' && obj) {
  169. var sOriOperate = obj.operate;
  170. var BefOrAft = sOriOperate.split(" ");
  171. var soperate = BefOrAft[0];
  172. var bAfter = BefOrAft[1];
  173. if (bAfter == "after") //事后监听:operate + after;
  174. {
  175. // console.log("事后监听:",soperate,"返回是否成功:",obj.return_flag,"操作文档:",obj.file,"类型:",obj.lType,);
  176. }
  177. else if (bAfter == "before") //事前监听:operate + before;
  178. {
  179. // console.log("事前监听:",soperate,"返回是否成功:",obj.return_flag,"操作文档:",obj.file,"类型:",obj.lType,);
  180. }
  181. else {
  182. console.log("undefined operate:", sOriOperate);
  183. }
  184. if (soperate == "tool_addannot") {
  185. console.log("添加注释:", obj.strName);
  186. }
  187. else if (soperate == "notify_changevalue") {
  188. console.log("编辑区", obj.strName, "最终内容为:", obj.strNewValue);
  189. }
  190. else if (soperate == "notify_texteditchanged") {
  191. console.log("编辑区", obj.strName, "修改为:", obj.strNewValue);
  192. }
  193. else if (soperate == "tool_tablet_exit") {
  194. console.log("退出手写模式!");
  195. }
  196. else if (soperate == "notify_login") {
  197. console.log("用户登录:", "用户:", obj.strName, "用户类型:", obj.lType);
  198. }
  199. else if (soperate == "file_open") {
  200. console.log("文档:", obj.file, "打开是否成功:", obj.return_flag);
  201. }
  202. else if (soperate == "file_export") {
  203. console.log("文档:", obj.file, "导出是否成功:", obj.return_flag);
  204. }
  205. else if (soperate == "file_save") {
  206. console.log("文档:", obj.file, "保存是否成功:", obj.return_flag);
  207. }
  208. else if (soperate == "edit_copy") {
  209. console.log("文档:", obj.file, "复制是否成功:", obj.return_flag);
  210. }
  211. else if (soperate == "file_print") {
  212. console.log("文档:", obj.file, "打印是否成功:", obj.return_flag, "打印机:", obj.printer, "打印机名称:", obj.strName, "copies:", obj.copies, "lType:", obj.lType);
  213. }
  214. else if (soperate == "file_saveurl") {
  215. console.log("文档:", obj.file, "保存到远程是否成功:", obj.return_flag, "dsturl:", obj.dsturl, "respoinse:", obj.httpresponse);
  216. }
  217. else if (soperate == "file_saveas") {
  218. console.log("文档:", obj.file, "另存是否成功:", obj.return_flag, "另存地址:", obj.saveas);
  219. }
  220. else if (soperate == "doc_sealsign") {
  221. console.log("文档:", obj.file, "盖章是否成功:", obj.return_flag, "name:", obj.strName);
  222. }
  223. else if (soperate == "doc_deleteseal") {
  224. console.log("文档:", obj.file, "删除印章是否成功:", obj.return_flag, "name:", obj.strName, "印章ID:", obj.sealID);
  225. }
  226. else if (soperate == "view_exitfullscreen") {
  227. console.log("文档:", obj.file, "退出全屏是否成功:", obj.return_flag);
  228. }
  229. else if (soperate == "plugin_ready") {
  230. console.log("多浏览器启动成功!");
  231. }
  232. else if (soperate == "pageindex") //只有事前监听的操作;
  233. {
  234. console.log("页面改变:", obj.index);
  235. }
  236. else if (soperate == "file_exit") {
  237. console.log("程序退出监听!");
  238. }
  239. else if (soperate == "f_editclick") {
  240. console.log("编辑区被点击");
  241. }
  242. else if (soperate == "doc_deletepage") {
  243. console.log("页面删除!");
  244. }
  245. else if (soperate == "tool_deleteannot") {
  246. console.log("节点删除!");
  247. }
  248. else if (soperate == "notify_changepencolor") {
  249. console.log("笔的颜色改变!");
  250. }
  251. else if (soperate == "notify_changepenwidth") {
  252. console.log("笔的宽度改变!");
  253. }
  254. else if (soperate == "notify_changevalue_data") {
  255. console.log("notify_changevalue_data");
  256. }
  257. else if (soperate == "notify_changevalue_dropcombobox") {
  258. console.log("notify_changevalue_dropcombobox");
  259. }
  260. else if (soperate == "viewpos_change") {
  261. var retPosition = await GetCurrPagePos(1, '', '', '', '');
  262. console.log("页面滚动:" + retPosition);
  263. }
  264. else {
  265. console.warn("无效的操作,请查看说明文档或者联系开发!");
  266. }
  267. }
  268. else {
  269. console.log("Undefined string!");
  270. }
  271. }
  272. //非异常情况则持续监听
  273. if (a != "99998" && a != "99999" && a != "<html><head><title></title></head><body bgcolor='#FFFFFF'></body></html>") {
  274. GetMonitorServEvent(0, opneListenEventCallback, "", "", "&SYNCMODE=1");
  275. }
  276. }
  277. else {
  278. var arr = a.split(";|;");
  279. //console.log(arr);
  280. if (arr[0] == "8") {//id=8
  281. console.log("文档关闭完成时触发");
  282. } else if (arr[0] == "30") {//id=30
  283. console.log("点击右上角差号窗口关闭事件")
  284. } else if (arr[0] == "7") {
  285. console.log("当前登录用户改变");
  286. } else if (arr[0] == "20") {//id=20
  287. if (arr[1] == "1,0") {
  288. //区域开始的坐标,32位数据,高16位表示Y,低16位表示X。
  289. //区域结束的坐标,32位数据,高16位表示Y,低16位表示X。
  290. console.log("拖动鼠标画矩形区域,开始坐标:" + arr[2] + "结束坐标:" + arr[3]);
  291. }
  292. } else if (arr[0] == "22") {//id=22
  293. if (arr[1] == "1,3") {
  294. console.log("删除节点,节点类型:" + arr[2] + " 节点名称:" + arr[3]);
  295. } else if (arr[1] == "1,5") {
  296. console.log("盖章,印章编号:" + arr[3] + "证书序列号和印章名称:" + arr[4]);
  297. //var Arguments = sessionStorage.getItem("Arguments"); //
  298. //$.ajax({
  299. // url: "/SRM/POSignBacks/Stamp" + "?" + Math.random(),
  300. // data: { objArrs: Arguments },
  301. // async: false,
  302. // dataType: "json",
  303. // success: function (data) {
  304. // if (data.result != "") {
  305. // $.modalAlert(data.result);
  306. // return;
  307. // } else {
  308. // SaveToS(1, 'http://localhost:19944/file/upload', Arguments);
  309. // //hideAipWnd('ExClose','','');
  310. // }
  311. // }
  312. //})
  313. } else if (arr[1] == "1,16") {
  314. console.log("选择节点时触发:" + arr[3]);
  315. }
  316. } else if (arr[0] == "6") {
  317. console.log("鼠标滑动到其他页展示");
  318. } else if (arr[0] == "2") {
  319. console.log("编辑区内容发生改变,节点名称" + arr[1]);
  320. } else if (arr[0] == "14") {
  321. console.log("进入全屏显示状态");
  322. } else if (arr[0] == "17") {
  323. //32698 颜色控制。 32702 操作控制。 32768 全屏控制。 32776 笔迹批注。 32778 文字批注。 32814 添加图片。 32823 添加编辑页。
  324. //32839 编辑宽度控制。 32885 加盖印章。 32887 添加批示页。 32893 添加手写区。 32894 添加编辑区。
  325. //57601 打开控制。 57602 关闭控制。 57603 保存控制。 57604 另存控制。 57643 撤销控制。 57644 恢复控制。
  326. //console.log("点击菜单按钮触发,返回值"+arr[1]);
  327. if (arr[1] == "1,57603") {
  328. console.log("点击保存图标");
  329. } else if (arr[1] == "1,57604") {
  330. console.log("点击另存为");
  331. } else if (arr[1] == "1,32768") {
  332. console.log("全屏控制");
  333. } else if (arr[1] == "1,32776") {
  334. console.log("笔迹批注");
  335. } else if (arr[1] == "1,32778") {
  336. console.log("文字批注");
  337. } else if (arr[1] == "1,32814") {
  338. console.log("添加图片");
  339. } else if (arr[1] == "1,32823") {
  340. console.log("添加编辑页");
  341. } else if (arr[1] == "1,57601") {
  342. console.log("打开控制");
  343. } else if (arr[1] == "1,57602") {
  344. console.log("关闭控制");
  345. } else if (arr[1] == "1,57643") {
  346. console.log("撤销控制");
  347. } else if (arr[1] == "1,57644") {
  348. console.log("恢复控制");
  349. }
  350. } else if (arr[0] == "19") {
  351. if (arr[1] == "1,6") {
  352. console.log("代码用户登录,证书序列号:" + arr[3] + "证书使用者" + arr[4])
  353. } else if (arr[1] == "1,7") {
  354. console.log("点击节点,节点名称:" + arr[3] + "页面索引:" + arr[4])
  355. } else if (arr[1] == "1,9") {
  356. console.log("关闭手写弹出框节点名称:" + arr[3])
  357. } else if (arr[1] == "1,8") {
  358. console.log("添加节点pos(pageindex;x;y;certno) :" + arr[4])
  359. }
  360. }
  361. //其他情况监听重启
  362. //var s1=SetMonitorServEvent("17-1|<57603><57604>;","","","",""); //阻断事件
  363. GetMonitorServEvent(0, opneListenEventCallback, b, "", "");
  364. }
  365. }
  366. /*id aip使
  367. [id(1)] void NotifyClick(BSTR pcName);
  368. [id(2)] void NotifyChangeValue(BSTR pcName, BSTR pcNewValue);
  369. [id(3)] void NotifyReset(BSTR pcName);
  370. [id(4)] void NotifySumbit(BSTR pcName);
  371. [id(5)] void NotifyDocOpened(long lOpenResult);
  372. [id(6)] void NotifyChangePage();
  373. [id(7)] void NotifyChangeCurrUser();
  374. [id(8)] void NotifyCloseDoc();
  375. [id(9)] void NotifyChangePenColor();
  376. [id(10)] void NotifyChangePenWidth();
  377. [id(11)] void NotifyCtrlReady();
  378. [id(12)] void NotifyMenuMsg(long lCmd, long* plContinue);
  379. [id(13)] void NotifyModifyStatus();
  380. [id(14)] void NotifyFullScreen();
  381. [id(15)] void NotifyPosChange(BSTR pcNoteName);
  382. [id(16)] void NotifySelect(BSTR pcName, long lNoteType);
  383. [id(17)] void JSNotifyMenuMsg(long lCmd);
  384. [id(18)] void NotifyBeforeAction(long lActionType, long lType, BSTR strName, BSTR strValue, long* plContinue);
  385. [id(19)] void JSNotifyBeforeAction(long lActionType, long lType, BSTR strName, BSTR strValue);
  386. [id(20)] void NotifyLineAction(long lPage, long lStartPos, long lEndPos);
  387. [id(21)] void NotifyDocumentEvent(BSTR strName);
  388. [id(22)] void NotifyAfterAction(long lActionType, long lType, BSTR strName, BSTR strValue);
  389. [id(23)] void NotifyChangeStatus(long lStatusType);
  390. [id(24)] void NotifyPressPen(long lScreenX, long lScreenY, long lPress);
  391. [id(25)] void NotifyAsyncCall(long lCallID, long lRet, BSTR strRet);
  392. [id(30)] aip窗口关闭事件
  393. */
  394. /****************************************************************************************************
  395. 方法名OpenFileEx 打开文档
  396. url 可以是服务器http路径http://127.0.0.1/test.pdf
  397. 也可以是本地文件路径c://test.pdf
  398. 也可以是文件流http://127.0.0.1/GetFile.aspx
  399. filetype 文档类型可以是docdocxxlsxlsxpdf
  400. *****************************************************************************************************/
  401. async function OpenFileEx(url, filetype) {
  402. var IsOpen = awaitLoadFileEx(url, filetype, 0, 0, "", "", "", "");
  403. if (IsOpen != 1) {
  404. ShowMessage("打开文档失败!", "提示", 0, "", "", "", "");
  405. }
  406. opneListenEvent();
  407. }
  408. /****************************************************************************************************
  409. 方法名OpenFileBase64 打开Base64编码的文档
  410. pcBase64String 加载文件由GetCurrFileBase64生成的字符串
  411. *****************************************************************************************************/
  412. async function OpenFileBase64(pcBase64String) {
  413. pcBase64String = pcBase64String || "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
  414. var IsOpen = await LoadFileBase64(pcBase64String, "", "", "", "");
  415. if (PlatForm() == "Linux" && IsOpen == 0) {
  416. //await ShowMessage("打开base64失败!","提示",0,"","","","");
  417. }
  418. if (PlatForm() == "Windows" && IsOpen != 0) {
  419. //await ShowMessage("打开base64失败!","提示",0,"","","","");
  420. }
  421. // opneListenEvent();
  422. }
  423. /****************************************************************************************************
  424. 方法名AddSeal 手动盖章或手写
  425. usertype 用户类型0 测试用户1 本地key用户2 本地注册用户3 服务器远程登录
  426. doaction 操作类型0 盖章1 手写
  427. user 用户名
  428. 当usertype为1,2值为用户真实姓名可以为空获则取证书用户名
  429. 当usertype为3时值为印章平台创建的userid插key时可以传空
  430. pwd 密码
  431. httpaddr 服务器地址
  432. 只有当usertype为3时需要传其他为空
  433. *****************************************************************************************************/
  434. async function AddSeal(usertype, doaction, user, pwd, httpaddr) {
  435. // ShowMessage("打开文档失败!","提示",0,"","","","");
  436. var islogin;
  437. // ShowMessage("登录失败!返回值为:"+islogin,"错误",0,"","","","");
  438. if (usertype == 0) {
  439. islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", "");
  440. } else if (usertype == 1) {
  441. islogin = await Login(user, 1, 65535, "", "", "", "", "", "");
  442. } else if (usertype == 2) {
  443. islogin = await Login(user, 2, 65535, "", "", "", "", "", "");
  444. } else if (usertype == 3) {
  445. islogin = await Login(user, 3, 65535, pwd, httpaddr, "", "", "", "");
  446. } else {
  447. await ShowMessage("用户类型参数错误,将以测试用户身份登录!", "提示", 0, "", "", "", "");
  448. islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", "");
  449. }
  450. //alert("登录失败!返回值为:"+islogin)
  451. if (islogin != 0) {
  452. //alert(islogin)
  453. console.log(islogin);
  454. console.log(typeof (islogin));
  455. await ShowMessage("登录失败!返回值为:" + parseInt(islogin) + "", "提示", 0, "", "", "", "");
  456. //ShowMessage("登录失败!返回值为:"+islogin,"提示",0,"","","","");
  457. return islogin;
  458. } else {
  459. console.log(islogin + "1")
  460. if (doaction == 0) {
  461. await CurrAction(2568, "", "", "", "");
  462. } else if (doaction == 1) {
  463. await CurrAction(264, "", "", "", "");
  464. } else {
  465. await ShowMessage("操作类型参数错误!", "错误", 0, "", "", "", "");
  466. return false;
  467. }
  468. }
  469. }
  470. /****************************************************************************************************
  471. 方法名AutoSeal 自动盖章
  472. usertype 用户类型0 测试用户1 本地key用户2 服务器key用户3 服务器口令用户
  473. doaction 操作类型0 普通印章1 右骑缝章2对开骑缝
  474. searchtype 定位盖章位置类型只对普通印章doaction=0时有效0 绝对坐标1 文字定位
  475. searchstring 定位信息只对普通印章doaction=0时有效
  476. searchtype为0时searchstring为x:y:pageindex格式即200:500:0 x为横向坐标1-50000y为纵向坐标1-50000pageindex为0表示在第1页盖章
  477. searchtype为1时searchstring为要查找的文字字符串
  478. user 用户名
  479. 当usertype为1,2值为用户真实姓名可以为空获则取证书用户名
  480. 当usertype为3时值为印章平台创建的userid插key时可以传空
  481. pwd 密码
  482. httpaddr 服务器地址
  483. 只有当usertype为3时需要传其他为空
  484. *****************************************************************************************************/
  485. async function AutoSeal(usertype, doaction, searchtype, searchstring, user, pwd, httpaddr) {
  486. var islogin;
  487. if (usertype == 0) {
  488. islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", "");
  489. } else if (usertype == 1) {
  490. islogin = await Login(user, 1, 65535, "", "", "", "", "", "");
  491. } else if (usertype == 2) {
  492. islogin = await Login(user, 2, 65535, "", "", "", "", "", "");
  493. } else if (usertype == 3) {
  494. islogin = await Login(user, 3, 65535, pwd, httpaddr, "", "", "", "");
  495. } else {
  496. await ShowMessage("用户类型参数错误,将以测试用户身份登录!", "提示", 0, "", "", "", "");
  497. islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", "");
  498. }
  499. if (islogin != 0) {
  500. await ShowMessage("登录失败!返回值为:" + parseInt(islogin), "错误", 0, "", "", "", "");
  501. return islogin;
  502. } else {
  503. var num = await GetPageCount("", "", "", "");
  504. if (doaction == 0) {
  505. var str = searchstring.split(":");
  506. var page = "";
  507. if (searchtype == 0) {
  508. var isseal = await AddQifengSeal(0, str[2] + "," + str[0] + ",0," + str[1], "", "AUTO_ADD_SEAL_FROM_PATH");
  509. if (isseal != 1) {
  510. await ShowMessage("盖章失败!返回值为:" + parseInt(isseal), "错误", 0, "", "", "", "");
  511. }
  512. return isseal;
  513. } else if (searchtype == 1) {
  514. num = num - 1;
  515. //最后往前找,去一个
  516. var isseal = await AddQifengSeal(0, "AUTO_ADD:0," + num + ",0,-50000,1," + searchstring + ")|(0,", "", "AUTO_ADD_SEAL_FROM_PATH");
  517. if (isseal != 1) {
  518. await ShowMessage("盖章失败!返回值为:" + parseInt(isseal), "错误", 0, "", "", "", "");
  519. }
  520. return isseal;
  521. }
  522. } else if (doaction == 1) {
  523. var page = "";
  524. for (var i = 1; i < num; i++) {
  525. page += i + ",";
  526. }
  527. if (num > 1) {
  528. var bl = 100 / (num);
  529. var isseal = await AddQifengSeal(0, 0 + ",25000,1,3," + bl + "," + page, "", "AUTO_ADD_SEAL_FROM_PATH");
  530. if (isseal != 1) {
  531. await ShowMessage("盖章失败!返回值为:" + parseInt(isseal), "错误", 0, "", "", "", "");
  532. }
  533. return isseal;
  534. } else {
  535. await ShowMessage("文档页数过少无法盖骑缝章!", "错误", 0, "", "", "", "");
  536. return "-100";
  537. }
  538. } else if (doaction == 2) {
  539. var snum1 = await GetNoteNum(251, "", "", "", "");
  540. console.log("snum1:" + snum1)
  541. if (snum1 == 0) {
  542. await ShowMessage("获取节点个数失败!", "错误", 0, "", "", "", "");
  543. return "-100";
  544. }
  545. for (var i = 0; i < num - 1; i++) {
  546. var isseal = await AddQifengSeal(0, i + ",25000,2,3,50,1", "", "AUTO_ADD_SEAL_FROM_PATH");
  547. }
  548. var snum2 = await GetNoteNum(251, "", "", "", "");
  549. console.log("snum2:" + snum2)
  550. if (snum2 > snum1) {
  551. return "1";
  552. } else {
  553. await ShowMessage("对开骑缝章盖章失败!", "错误", 0, "", "", "", "");
  554. return "-100";
  555. }
  556. }
  557. }
  558. }
  559. /****************************************************************************************************
  560. 方法名SaveToS 保存文档
  561. savetype 文档保存方式0 保存本地1 保存到服务器
  562. filepath 文档保存路径
  563. savetype为0时为本地路径可以为空为空会弹出地址框例如c:/test/1.pdf
  564. savetype为1时为服务器路径例如http://127.0.0.1/getfile.php,地址为文件接收服务器地址,接收文件流FileBlod
  565. filecode 文档惟一标示
  566. savetype为0时为文档类型值可以为docpdfaipwordjpggifbmp等
  567. savetype为1时为文档唯一标示用做服务器接收的参数FileCode
  568. *****************************************************************************************************/
  569. async function SaveToS(savetype, filepath, filecode, TempCount) {
  570. var TempCount2 = await GetNoteNum(251, "", "", "", "");
  571. if (TempCount >= TempCount2) {
  572. await ShowMessage("盖章失败,请退出后重试!", "错误", 0, "", "", "", "");
  573. } else {
  574. if (savetype == 0) {
  575. var issave = await SaveTo(filepath, filecode, 0, "", "", "", "");
  576. if (issave == 0) {
  577. await ShowMessage("保存失败!", "错误", 0, "", "", "", "");
  578. }
  579. } else if (savetype == 1) {
  580. if (PlatForm() == "Windows") {
  581. await HttpInit("", "", "", ""); //初始化HTTP引擎。
  582. await SetValue("ADD_FORCETYPE_VALUE2", "32768", "", "", "", ""); //上传流格式保持原文件格式
  583. await HttpAddPostString("FileCode", filecode, "", "", "", ""); //设置上传变量FileCode文档惟一标示。
  584. await HttpAddPostString("FileName", filecode, "", "", "");
  585. await HttpAddPostString("FileType", "pdf", "", "", "");
  586. await HttpAddPostCurrFile("FileBlod", "", "", "", ""); //设置上传当前文件,文件标识为FileBlod。
  587. // HttpAddPostFile("FileBlod",tempFile, "", "", "", "");; //设置上传当前文件,文件标识为FileBlod。
  588. //设置header头
  589. await SetValue("SET_CURRENT_COOKIE", "COOKIE:LOGIN_TEST=somevalue;KEY=asdfdf\r\nSSTEST:key1=123;key2=456", "", "", "");//xc下只\n win下\r\n
  590. var ispost = await HttpPost(filepath, "", "", "", ""); //上传数据。
  591. console.log("ispost:" + ispost);
  592. if (ispost == '"ok"') {
  593. hideAipWnd('ExClose', '', '');
  594. /* ShowMessage("上传成功!", "提示", 0, "", "", "", "");*/
  595. } else {
  596. console.log("上传失败");
  597. await ShowMessage("文档上传失败!错误代码:" + parseInt(ispost), "错误", 0, "", "", "", "");
  598. }
  599. }
  600. if (PlatForm() == "Linux") {
  601. var ispost = await SaveFile_Linux(filepath, '', '', '', '');
  602. if (ispost)
  603. ShowMessage("上传成功!", "提示", 0, "", "", "", "");
  604. else
  605. await ShowMessage("文档上传失败!错误代码:" + ispost, "错误", 0, "", "", "", "");
  606. }
  607. }
  608. else {
  609. await ShowMessage("SaveTo方法参数错误!", "错误", 0, "", "", "", "");
  610. }
  611. }
  612. }
  613. /****************************************************************************************************
  614. 方法名FilePrint 打印文档
  615. plog 0快速打印1有打印对话框
  616. *****************************************************************************************************/
  617. async function FilePrint(plog) {
  618. var isprint;
  619. if (PlatForm() == "Linux") {
  620. isprint = await PrintDoc_Linux(1, plog, '', '', '', '', '');
  621. }
  622. else {
  623. isprint = await PrintDoc(1, plog, "", "", "", "");
  624. }
  625. if (isprint == 0) {
  626. await ShowMessage("打印失败!", "错误", 0, "", "", "", "");
  627. }
  628. }
  629. /****************************************************************************************************
  630. 方法名FileMerge 合并文件
  631. filepath 要合并文件路径如果只为空则插入一个空白页
  632. page 文件要插入的页index,即插入到第一页值为0
  633. *****************************************************************************************************/
  634. async function FileMerge(filepath, page) {
  635. //var islogin = await Login("", 1, 65535, "", "", "", "", "", "");
  636. //if (islogin != 0) {
  637. // await ShowMessage("登录失败!返回值为:" + parseInt(islogin), "错误", 0, "", "", "", "");
  638. // return islogin;
  639. //} else {
  640. var isMerge = 0;
  641. if (filepath == "") {
  642. if (PlatForm() == "Linux")
  643. isMerge = await InsertEmptyPage(page, 0, 50000, 50000, "", "", "", "");
  644. else
  645. isMerge = await InsertEmptyPage(page, 0, 0, 0, "", "", "", "");
  646. } else {
  647. isMerge = await MergeFile(page, filepath, "", "", "", "");
  648. await SetPageMode(1, 100, "", "", "", "");//设置当前显示模式为自定义模式,缩放比例为100%。
  649. await SetCurrPage(0, "", "", "", "");//设置当前页索引
  650. }
  651. if (isMerge == 0) {
  652. await ShowMessage("合并文档失败!", "错误", 0, "", "", "", "");
  653. }
  654. /*}*/
  655. }
  656. /****************************************************************************************************
  657. 方法名SetPenwidth 设置手写笔宽
  658. *****************************************************************************************************/
  659. async function SetPenwidth() {
  660. await SetCurrPenWidth(-1, "", "", "", "");//1-28为笔宽范围 -1弹出笔宽设置对话框 用户自行选择
  661. }
  662. /****************************************************************************************************
  663. 方法名SetColor 设置手写笔颜色
  664. *****************************************************************************************************/
  665. async function SetColor() {
  666. await SetCurrPenColor(-1, "", "", "", "");//BBGGRR 黑色0 红色FF 255 蓝色FF0000 16711680 白色FFFFFF 16777215,-1弹出笔颜色设置对话框 用户自行选择
  667. }
  668. /****************************************************************************************************
  669. 方法名SetPressure 设置手写压感
  670. *****************************************************************************************************/
  671. async function SetPressure() {
  672. await SetPressurelevel(0, "", "", "", "");//1-12压感级别 0弹出压感设置对话框 用户自行选择
  673. }
  674. /****************************************************************************************************
  675. 方法名SetAction 设置鼠标状态
  676. SetLog 设置状态1 浏览2 文字选择
  677. *****************************************************************************************************/
  678. async function SetAction(SetLog) {
  679. await CurrAction(SetLog, "", "", "", "");
  680. }
  681. /****************************************************************************************************
  682. 方法名DoAction 设置恢复或撤销
  683. SetLog 设置状态1 单步撤销2 全部撤销3 单步恢复4 全部恢复
  684. *****************************************************************************************************/
  685. async function DoAction(SetLog) {
  686. if (SetLog == 1) {
  687. await Undo("", "", "", "");
  688. } else if (SetLog == 2) {
  689. await UndoAll("", "", "", "");
  690. } else if (SetLog == 3) {
  691. await Redo("", "", "", "");
  692. } else if (SetLog == 4) {
  693. await RedoAll("", "", "", "");
  694. }
  695. }
  696. /****************************************************************************************************
  697. 方法名SetPageView 设置视图
  698. SetLog 设置操作状态1 原始大小2 适应宽度3 窗口模式4 双页显示5 平滑显示6 翻页模式7 格式清除
  699. *****************************************************************************************************/
  700. async function SetPageView(SetLog) {
  701. if (SetLog == 1) {
  702. await SetPageMode(1, 100, "", "", "", ""); //自定义模式 参数二为放大缩小比例 传0则弹出缩放比例对话框
  703. } else if (SetLog == 2) {
  704. await SetPageMode(2, 100, "", "", "", "");
  705. } else if (SetLog == 3) {
  706. await SetPageMode(4, 100, "", "", "", "");
  707. } else if (SetLog == 4) {
  708. await SetPageMode(8, 2, "", "", "", "");
  709. } else if (SetLog == 5) {
  710. await SetPageMode(16, 1, "", "", "", "");
  711. } else if (SetLog == 6) {
  712. await SetPageMode(32, 1, "", "", "", "");
  713. } else if (SetLog == 7) {
  714. await SetPageMode(8, 1, "", "", "", "");
  715. await SetPageMode(16, 0, "", "", "", "");
  716. await SetPageMode(32, 0, "", "", "", "");
  717. } else {
  718. await ShowMessage("设置视图参数错误!", "错误", 0, "", "", "", "");
  719. return false;
  720. }
  721. }
  722. /****************************************************************************************************
  723. 方法名ShowToolBar 设置工具栏
  724. SetLog 设置状态0 隐藏1 显示
  725. *****************************************************************************************************/
  726. async function ShowToolBar(SetLog) {
  727. await SetShowToolBar(SetLog, "", "", "", "");
  728. }
  729. /****************************************************************************************************
  730. 方法名ShowDefMenu 设置菜单
  731. SetLog 设置状态0 隐藏1 显示
  732. *****************************************************************************************************/
  733. async function ShowDefMenu(SetLog) {
  734. await SetShowDefMenu(SetLog, "", "", "", "");
  735. }
  736. /****************************************************************************************************
  737. 方法名ShowScrollBarButton 设置滚动条
  738. SetLog 设置状态2 隐藏滚动条1 隐藏滚动条的工具栏0 显示滚动条
  739. *****************************************************************************************************/
  740. async function ShowScrollBarButton(SetLog) {
  741. await SetShowScrollBarButton(SetLog, "", "", "", "");
  742. }
  743. /****************************************************************************************************
  744. 方法名ShowFullScreen 设置全屏
  745. SetLog 设置状态1全屏0正常
  746. *****************************************************************************************************/
  747. async function ShowFullScreen(SetLog) {
  748. await SetShowFullScreen(SetLog, "", "", "", "");
  749. }
  750. /****************************************************************************************************
  751. 方法名SearchText 查找文字
  752. stxt 要查找的文字
  753. matchcase 是否区分大小写 0区分 1不区分
  754. findnext 查找位置 0从头查找 1查找下一个
  755. *****************************************************************************************************/
  756. async function FZSearchText(stxt, matchcase, findnext) {
  757. await SearchText(stxt, matchcase, findnext, "", "", "", "");
  758. }
  759. /****************************************************************************************************
  760. 方法名AddBarcode 添加二维条码
  761. *****************************************************************************************************/
  762. async function AddBarcode(BarcodeStr, page, Xpos, Ypos, Zoom) {
  763. //Zoom 图片缩放比例(百分比)+二维码类型x65536(仅对二维码类型) 0-24 PDF417 200 QR
  764. var islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", "");
  765. if (islogin != 0) {
  766. await ShowMessage("登录失败!返回值为:" + parseInt(islogin), "错误", 0, "", "", "", "");
  767. return islogin;
  768. } else {
  769. await InsertPicture("barcode", "BARCODEDATA:" + BarcodeStr, page, Xpos, Ypos, Zoom, "", "", "", "");
  770. }
  771. }
  772. //添加水印
  773. async function addwater() {
  774. if (PlatForm() == "Linux") {
  775. await addTrackInfo_Linux();
  776. }
  777. else {
  778. await SetWaterMarkMode(2, '', '', '', ''); //设置模式 设置1 居中 (文字)。 2 平铺 (文字)。 3 居中带阴影(文字)。 4 平铺带阴影(文字)。 7 指定像素值。 0去掉全局水印
  779. await SetWaterMarkTextOrPath("123", '', '', '', '');
  780. await SetWaterMarkPosX(100, '', '', '', '');
  781. await SetWaterMarkPosY(100, '', '', '');
  782. }
  783. }
  784. async function delwater() {
  785. if (PlatForm() == "Linux") {
  786. await DelTrackInfo_Linux('', '', '', '');
  787. }
  788. else {
  789. await SetWaterMarkMode(0, '', '', '', '');
  790. }
  791. }
  792. async function checkapp() {
  793. if (PlatForm() == "Windows") {
  794. var str = await CheckApp('', '', '', '');
  795. console.log("进程存活状态:" + str);
  796. await ShowMessage("进程存活状态:" + str, "错误", 0, "", "", "", "");
  797. }
  798. var str1 = await GetLVersion("", "", "", "");
  799. console.log("版本号" + str1);
  800. await ShowMessage("版本号:" + str1, "错误", 0, "", "", "", "");
  801. }
  802. async function verifyNotes() {
  803. if (PlatForm() == "Linux")
  804. return;
  805. var str = await VerifyNotes('', '', 0, '', '', '', '');
  806. console.log("验证结果:" + str);
  807. await ShowMessage("验证结果:" + str, "错误", 0, "", "", "", "");
  808. //var str2=await VerifyNotes('','',1,'','','','');
  809. //console.log("验证结果:"+str2);
  810. }
  811. function printWaterTxt() {
  812. if (PlatForm() == "Linux") {
  813. setDynamicWaterMark();
  814. }
  815. else {
  816. var str = setdispidShowWM("测试屏幕水印", 48, 0, 0, "45", 0, 1, '', '', '', '');
  817. console.log("printWaterTxt:" + str);
  818. }
  819. }
  820. async function DeleteWaterTxt() {
  821. if (PlatForm() == "Linux") {
  822. DelWaterMarkOfTrackInfo_Linux("", "", "", "");
  823. } else {
  824. var str = setdispidShowWM("", 48, 0, 0, "45", 0, 1, '', '', '', '');
  825. console.log("printWaterTxt:" + str);
  826. }
  827. }
  828. async function getNote() {
  829. var User = "";
  830. while (User = await GetNextUser(User, '', '', '', '', '')) {//循环用户
  831. var NoteInfo = "";
  832. while (NoteInfo = await GetNextNote(User, 0, NoteInfo, '', '', '', '')) {//循环节点
  833. console.log("节点信息" + NoteInfo);
  834. }
  835. }
  836. }
  837. /*
  838. 接口原型
  839. void addTrackInfo(String xmlParam, String sImgData = "");
  840. 参数说明
  841. xmlParam String类型添加水印的属性xml形式的字符串
  842. sImgData String类型图像数据base64编码
  843. 返回值说明
  844. 备注
  845. 传入的xmlParam参数如下
  846. type String类型水印类型取值(text/image)
  847. text 文字水印
  848. image 图片水印
  849. patterntype String类型位置取值(center/tile/pos居中/平铺/指定位置)
  850. startindex String类型开始页
  851. endindex String类型结束页
  852. imagefile String类型图片路径(type为image)
  853. content String类型文字内容(type为text)
  854. rotate String类型旋转角度
  855. opacity String类型不透明度
  856. fontname String类型字体名称
  857. Fontsize String类型字体大小
  858. fontcolor String类型字体颜色
  859. zoom String类型缩放百分比
  860. offsetx String类型X轴位置(单位毫米)
  861. offsety String类型Y轴位置(单位毫米)
  862. 代码示例
  863. 文字水印
  864. var xmlstr="<trackinfo type=\"text\" patterntype=\"center\" content=\"测试\" rotate=\"0\" opacity=\"100\" fontsize=\"10.5\" fontcolor=\"#00ff00\" zoom=\"1\" offsetx=\"0\" offsety=\"0\"/>";
  865. 图片水印
  866. var xmlstr="<trackinfo type=\"image\" patterntype=\"center\" imagefile=\"/tmp/1111.png\" rotate=\"0\" opacity=\"100\" fontname=\"simsun\" fontsize=\"10.5\" fontcolor=\"#00ff00\" zoom=\"1\" offsetx=\"0\" offsety=\"0\"/>";
  867. */
  868. async function addTrackInfo_Linux() {
  869. // console.log("sTime:",sTime);
  870. // var sComponent = encodeURIComponent(sTime).replace(/%20/g,"\+");//encodeURIComponent(cmddata).replace(/%20/g,"\+")
  871. // console.log("sComponent:",sComponent);
  872. var xmlstr = "<trackinfo type=\"text\" patterntype=\"center\" content=\"我最帅\" rotate=\"0\" opacity=\"100\" fontsize=\"10.5\" fontcolor=\"#00ff00\" zoom=\"1\" offsetx=\"0\" offsety=\"0\"/>";
  873. console.log(xmlstr);
  874. await AddTrackInfo_Linux(xmlstr, " ", '', '', '', '');
  875. }
  876. /*
  877. 设置屏幕水印
  878. 接口原型
  879. void setDynamicWaterMark(String sJson);
  880. 参数说明
  881. sJsonString类型添加屏幕水印的属性json串
  882. 返回值说明
  883. 备注
  884. 传入的sJon参数如下
  885. showfalg bool类型是否显示屏幕水印1显示 0不显示
  886. printfalg bool类型是否显示打印水印1显示 0不显示
  887. type int类型水印类型1 图像水印 0文字水印
  888. content string类型文字内容
  889. fontcolor string类型文字水印颜色 #ffffff
  890. fontsize float类型字体大小
  891. fontname string类型字体名称
  892. italic bool类型是否斜体 1 斜体 0非斜体
  893. bold bool类型是否加粗 1 加粗 0 不加粗
  894. underline bool类型是否加下划线 1 有下划线 0无下划线
  895. date bool类型是否附加日期水印 1 附加 0不附加
  896. sysuser bool类型是否附加系统用户名水印 1 附加 0不附加
  897. user bool类型是否附加登录用户名水印 1 附加 0不附加
  898. opacity float类型不透明度
  899. xspace float类型X间距(单位毫米)
  900. yspace float类型Y间距(单位毫米)
  901. rotate float类型文字旋转角度
  902. pattern int类型水印样式 0居中1平铺 2指定位置
  903. zoom float类型缩放比例
  904. 代码示例
  905. var json='{"showfalg":"1","printfalg":"1","type":"0","imgfile":"","content":"aaaa","fontcolor":"#ffffff","fontsize":"10","fontname":"ubuntu","italic":"1","bold":"1","underline":"1","date":"1","sysuser":"1","user":"1","opacity":"0","xspace":"50","yspace":"50","rotate":"60","pattern":"1","zoom":"200"}';
  906. */
  907. async function setDynamicWaterMark() {
  908. var json = '{"showfalg":"1","printfalg":"1","type":"0","imgfile":"","content":"DianjuDynamic","fontcolor":"#00ff00","fontsize":"10","fontname":"ubuntu","italic":"1","bold":"1","underline":"1","date":"1","sysuser":"1","user":"1","opacity":"255","xspace":"50","yspace":"50","rotate":"60","pattern":"0","zoom":"200"}';
  909. console.log("json:", json);
  910. await AddDynamicWaterMark_Linux(json, '', '', '', '');
  911. }
  912. //致远项目bug;
  913. async function SetCookie() {
  914. // var ret = SetValue("SET_CURRENT_COOKIE","Cookie:JSESSIONID="+state.jsessionId+"\r\n","","","","");
  915. var jsessionId = "1111111"
  916. //1.setUserToken
  917. await setUserToken_Linux(jsessionId, '', '', '', '');
  918. //2.setHeaderInfo
  919. await setHeaderInfo_Linux("Cookie", "JSESSIONID=" + jsessionId, '', '', '', '');
  920. }
  921. //0,1,2,4,8
  922. async function GetPagePos() {
  923. var ret = await GetCurrPagePos(2, '', '', '', '');
  924. console.log("pagepos:", ret);
  925. }
  926. async function SetNaviShowView() {
  927. // view_navigation_outline
  928. // performClick
  929. await performClick_Linux("view_navigation_outline", 1, '', '', '', '');
  930. }