|
|
var windowName = ""; //控件窗口ID
window.onload = function () { var g_PlatForm = PlatForm(); //判断平台;
windowName = document.title + new Date().getTime(); //控件窗口ID 默认title+时间戳
if (g_PlatForm == "Linux") { // MOD Linux下识别浏览器上的标签页进行嵌入如果多个标签页名字相同会发生随机document.title
windowName = document.title; } }
/*封装函数*/
/****************************************************************************************************
方法名:PlatForm 判断平台; 参 数:
*****************************************************************************************************/ function PlatForm() { var _platform = navigator.platform; var isWin = (_platform == "Win32" || _platform == "Windows"); var isMac = (_platform == "Mac68K" || _platform == "MacPPC" || _platform == "Macintosh" || _platform == "MacIntel"); var isUnix = (_platform == "X11") && !isWin && !isMac; var isLinux = (_platform.indexOf("Linux") > -1); if (isMac) return "MacOS";
if (isUnix) return "Unix";
if (isLinux) return "Linux";
if (isWin) return "Windows";
return ""; }
/****************************************************************************************************
方法名:setDispidShowWndLevel 设置窗口层级,是否可用关闭按钮,打开窗口 参 数:
*****************************************************************************************************/ async function showAipWnd(p1) { if (PlatForm() == "Windows") { await SetShowDefMenu(0, "", "", "", "");//隐藏菜单
await SetShowToolBar(2, "", "", "", "");//工具栏显示大图标
await HideMenuItem(10, "", "", "", "");//调用这个接口可以隐藏打开、新建
await disidSetShowScrollBarButton(1, "", "", "", "");//接口隐藏状态栏
} var level = await SetDispidShowWndLevel(1, '', '', '', ''); var closebtn = await dispidEnableCloseBtn(1, '', '', '', ''); var showaip = await ShowAipWnd(p1, 50, 50, '', '', '', '');
}
//测试是否进入异步方法
function test(data) { console.log("异步" + data); } async function hideAipWnd() { await HideAipWnd('', '', '', '');//隐藏窗口
await CloseDoc(0, '', '', '', ''); //关闭文档
// dispidExitApp('','','','');//杀进程
};
async function DispidExitApp() { if (PlatForm() == "Linux") { await ExitApp_Linux("", "", "", ""); return; }
await dispidExitApp("", "", ""); }
async function DispidReopenApp(p1) { if (PlatForm() == "Linux") { await ReopenApp_Linux("", "", "", ""); return; }
await dispidReopenApp(p1, "", "", "", "");//快速重启进程
}
/****************************************************************************************************
方法名:OpenFile 打开文档 参 数:url 可以是服务器http路径:http://127.0.0.1/test.pdf
也可以是本地文件路径:c://test.pdf
也可以是文件流:http://127.0.0.1/GetFile.aspx
*****************************************************************************************************/ async function OpenFile(url) { await showAipWnd(9); var IsOpen = await LoadFile(url, "", "", "", ""); console.log("IsOpen:" + IsOpen);
//await SetPageMode(1,100,"","","","");//设置当前显示模式为自定义模式,缩放比例为100%。
//console.log(1232);
if (IsOpen != 1) { await ShowMessage("打开文档失败!", "提示", 0, "", "", "", ""); } else {
} //opneListenEvent();
}
/** 事件监听开启 */ async function opneListenEvent() { if (PlatForm() == "Linux") { //国产化监听
//国产化开启事前监听
// var s1=SetMonitorServEvent("17-1|<57603><57604>;","","","",""); //阻断事件
// SetMonitorServEvent("17-1;","","","",""); //开启阻塞阅读器按钮事件:js重写对应按钮功能;
await SetMonitorServEvent("6-1;", "", "", "", ""); //开启页面滚动监听
// SetMonitorServEvent("18-1;",'','','','');
var getGetMonitor = await GetMonitorServEvent(0, opneListenEventCallback, "", "", ""); console.log("事件监听开启" + getGetMonitor);
} else {//windows监听
await SetJSEnv(1, "", "", "", ""); // var env = await GetJSEnv("", "", "", "");
// console.log("env:" + env);
//阻断保存和另存为原有功能
//var s1=SetMonitorServEvent("17-1|<57603><57604>;","","","",""); //阻断事件
// var s2 = await SetMonitorServEvent("18-1;", "", "", "", "");
// console.log("SetMonitorServEvent:", s2);
var getGetMonitor = GetMonitorServEvent(0, opneListenEventCallback, "", "", ""); console.log("事件监听开启" + getGetMonitor); }
}
/** 事件监听回调,返回值id参考下方id,对应可以看aip开发文档 */ const opneListenEventCallback = async function (a, b) { console.log("+++opneListenEventCallback+++:" + a); if (PlatForm() == "Linux") { var bSplitAble = a.includes(";|;"); // console.log("bSplitAble:",bSplitAble);
if (bSplitAble) { var arr = a.split(";|;"); var bType = arr[0]; if (bType == 12 || bType == 17) { var retStr = arr[1]; if (retStr == "1,32817") console.log("view_zooout 放大 "); else if (retStr == "1,32818") console.log("view_zoommin 缩小"); else if (retStr == "1,32885") console.log("doc_sealsign 手动盖章"); else if (retStr == "1,32768") console.log("view_fullscreen 全屏"); else if (retStr == "1,33011") console.log("file_saveas 另存为"); else if (retStr == "1,57600") console.log("fire_createfile 新建文件"); else if (retStr == "1,57601") console.log("file_open 打开文件"); else if (retStr == "1,57602") console.log("file_close 文件关闭"); else if (retStr == "1,57603") console.log("file_save 保存文件"); else if (retStr == "1,57605") console.log("menu_view_pagelayout 页面缩放"); else if (retStr == "1,57607") console.log("file_print 打印"); else if (retStr == "1,57643") console.log("edit_undo 撤销"); else if (retStr == "1,57644") console.log("edit_redo 重做"); else if (retStr == "1,57664") console.log("help_productinfo 关于"); else if (retStr == "1,60008") console.log("contextmenu_signature_property 右键印章,印章信息"); else if (retStr == "1,60009") console.log("doc_verifyseal 右键印章,签名验证"); else if (retStr == "1,60000") console.log("右键印章,删除印章"); else console.log("undefined"); } else if (bType == 22) { var retStr = arr[1].split(","); var beforeType = retStr[0]; if (beforeType == "1008") { console.log("编辑区:", retStr[1], "被点击!"); } } } else { var obj = JSON.parse(a); if (typeof obj == 'object' && obj) { var sOriOperate = obj.operate; var BefOrAft = sOriOperate.split(" "); var soperate = BefOrAft[0]; var bAfter = BefOrAft[1]; if (bAfter == "after") //事后监听:operate + after;
{ // console.log("事后监听:",soperate,"返回是否成功:",obj.return_flag,"操作文档:",obj.file,"类型:",obj.lType,);
} else if (bAfter == "before") //事前监听:operate + before;
{ // console.log("事前监听:",soperate,"返回是否成功:",obj.return_flag,"操作文档:",obj.file,"类型:",obj.lType,);
} else { console.log("undefined operate:", sOriOperate); }
if (soperate == "tool_addannot") { console.log("添加注释:", obj.strName); } else if (soperate == "notify_changevalue") { console.log("编辑区", obj.strName, "最终内容为:", obj.strNewValue); } else if (soperate == "notify_texteditchanged") { console.log("编辑区", obj.strName, "修改为:", obj.strNewValue); } else if (soperate == "tool_tablet_exit") { console.log("退出手写模式!"); } else if (soperate == "notify_login") { console.log("用户登录:", "用户:", obj.strName, "用户类型:", obj.lType); } else if (soperate == "file_open") { console.log("文档:", obj.file, "打开是否成功:", obj.return_flag); } else if (soperate == "file_export") { console.log("文档:", obj.file, "导出是否成功:", obj.return_flag); } else if (soperate == "file_save") { console.log("文档:", obj.file, "保存是否成功:", obj.return_flag); } else if (soperate == "edit_copy") { console.log("文档:", obj.file, "复制是否成功:", obj.return_flag); } else if (soperate == "file_print") { console.log("文档:", obj.file, "打印是否成功:", obj.return_flag, "打印机:", obj.printer, "打印机名称:", obj.strName, "copies:", obj.copies, "lType:", obj.lType); } else if (soperate == "file_saveurl") { console.log("文档:", obj.file, "保存到远程是否成功:", obj.return_flag, "dsturl:", obj.dsturl, "respoinse:", obj.httpresponse); } else if (soperate == "file_saveas") { console.log("文档:", obj.file, "另存是否成功:", obj.return_flag, "另存地址:", obj.saveas); } else if (soperate == "doc_sealsign") { console.log("文档:", obj.file, "盖章是否成功:", obj.return_flag, "name:", obj.strName); } else if (soperate == "doc_deleteseal") { console.log("文档:", obj.file, "删除印章是否成功:", obj.return_flag, "name:", obj.strName, "印章ID:", obj.sealID); } else if (soperate == "view_exitfullscreen") { console.log("文档:", obj.file, "退出全屏是否成功:", obj.return_flag); } else if (soperate == "plugin_ready") { console.log("多浏览器启动成功!"); } else if (soperate == "pageindex") //只有事前监听的操作;
{ console.log("页面改变:", obj.index); } else if (soperate == "file_exit") { console.log("程序退出监听!"); } else if (soperate == "f_editclick") { console.log("编辑区被点击"); } else if (soperate == "doc_deletepage") { console.log("页面删除!"); } else if (soperate == "tool_deleteannot") { console.log("节点删除!"); } else if (soperate == "notify_changepencolor") { console.log("笔的颜色改变!"); } else if (soperate == "notify_changepenwidth") { console.log("笔的宽度改变!"); } else if (soperate == "notify_changevalue_data") { console.log("notify_changevalue_data"); } else if (soperate == "notify_changevalue_dropcombobox") { console.log("notify_changevalue_dropcombobox"); } else if (soperate == "viewpos_change") { var retPosition = await GetCurrPagePos(1, '', '', '', ''); console.log("页面滚动:" + retPosition); } else { console.warn("无效的操作,请查看说明文档或者联系开发!"); } } else { console.log("Undefined string!"); }
} //非异常情况则持续监听
if (a != "99998" && a != "99999" && a != "<html><head><title></title></head><body bgcolor='#FFFFFF'></body></html>") { GetMonitorServEvent(0, opneListenEventCallback, "", "", "&SYNCMODE=1"); } } else { var arr = a.split(";|;"); //console.log(arr);
if (arr[0] == "8") {//id=8
console.log("文档关闭完成时触发");
} else if (arr[0] == "30") {//id=30
console.log("点击右上角差号窗口关闭事件") } else if (arr[0] == "7") { console.log("当前登录用户改变"); } else if (arr[0] == "20") {//id=20
if (arr[1] == "1,0") { //区域开始的坐标,32位数据,高16位表示Y,低16位表示X。
//区域结束的坐标,32位数据,高16位表示Y,低16位表示X。
console.log("拖动鼠标画矩形区域,开始坐标:" + arr[2] + "结束坐标:" + arr[3]); }
} else if (arr[0] == "22") {//id=22
if (arr[1] == "1,3") { console.log("删除节点,节点类型:" + arr[2] + " 节点名称:" + arr[3]); } else if (arr[1] == "1,5") { console.log("盖章,印章编号:" + arr[3] + "证书序列号和印章名称:" + arr[4]); //var Arguments = sessionStorage.getItem("Arguments"); //
//$.ajax({
// url: "/SRM/POSignBacks/Stamp" + "?" + Math.random(),
// data: { objArrs: Arguments },
// async: false,
// dataType: "json",
// success: function (data) {
// if (data.result != "") {
// $.modalAlert(data.result);
// return;
// } else {
// SaveToS(1, 'http://localhost:19944/file/upload', Arguments);
// //hideAipWnd('ExClose','','');
// }
// }
//})
} else if (arr[1] == "1,16") { console.log("选择节点时触发:" + arr[3]); }
} else if (arr[0] == "6") { console.log("鼠标滑动到其他页展示");
} else if (arr[0] == "2") { console.log("编辑区内容发生改变,节点名称" + arr[1]);
} else if (arr[0] == "14") { console.log("进入全屏显示状态");
} else if (arr[0] == "17") {
//32698 颜色控制。 32702 操作控制。 32768 全屏控制。 32776 笔迹批注。 32778 文字批注。 32814 添加图片。 32823 添加编辑页。
//32839 编辑宽度控制。 32885 加盖印章。 32887 添加批示页。 32893 添加手写区。 32894 添加编辑区。
//57601 打开控制。 57602 关闭控制。 57603 保存控制。 57604 另存控制。 57643 撤销控制。 57644 恢复控制。
//console.log("点击菜单按钮触发,返回值"+arr[1]);
if (arr[1] == "1,57603") { console.log("点击保存图标"); } else if (arr[1] == "1,57604") { console.log("点击另存为"); } else if (arr[1] == "1,32768") { console.log("全屏控制"); } else if (arr[1] == "1,32776") { console.log("笔迹批注"); } else if (arr[1] == "1,32778") { console.log("文字批注"); } else if (arr[1] == "1,32814") { console.log("添加图片"); } else if (arr[1] == "1,32823") { console.log("添加编辑页"); } else if (arr[1] == "1,57601") { console.log("打开控制"); } else if (arr[1] == "1,57602") { console.log("关闭控制"); } else if (arr[1] == "1,57643") { console.log("撤销控制"); } else if (arr[1] == "1,57644") { console.log("恢复控制"); }
} else if (arr[0] == "19") { if (arr[1] == "1,6") { console.log("代码用户登录,证书序列号:" + arr[3] + "证书使用者" + arr[4]) } else if (arr[1] == "1,7") { console.log("点击节点,节点名称:" + arr[3] + "页面索引:" + arr[4]) } else if (arr[1] == "1,9") { console.log("关闭手写弹出框节点名称:" + arr[3]) } else if (arr[1] == "1,8") { console.log("添加节点pos(pageindex;x;y;certno) :" + arr[4]) }
} //其他情况监听重启
//var s1=SetMonitorServEvent("17-1|<57603><57604>;","","","",""); //阻断事件
GetMonitorServEvent(0, opneListenEventCallback, b, "", ""); } }
/*事件id 参考aip开发文档对应事件具体使用方法 [id(1)] void NotifyClick(BSTR pcName); [id(2)] void NotifyChangeValue(BSTR pcName, BSTR pcNewValue); [id(3)] void NotifyReset(BSTR pcName); [id(4)] void NotifySumbit(BSTR pcName); [id(5)] void NotifyDocOpened(long lOpenResult); [id(6)] void NotifyChangePage(); [id(7)] void NotifyChangeCurrUser(); [id(8)] void NotifyCloseDoc(); [id(9)] void NotifyChangePenColor(); [id(10)] void NotifyChangePenWidth(); [id(11)] void NotifyCtrlReady(); [id(12)] void NotifyMenuMsg(long lCmd, long* plContinue); [id(13)] void NotifyModifyStatus(); [id(14)] void NotifyFullScreen(); [id(15)] void NotifyPosChange(BSTR pcNoteName); [id(16)] void NotifySelect(BSTR pcName, long lNoteType); [id(17)] void JSNotifyMenuMsg(long lCmd); [id(18)] void NotifyBeforeAction(long lActionType, long lType, BSTR strName, BSTR strValue, long* plContinue); [id(19)] void JSNotifyBeforeAction(long lActionType, long lType, BSTR strName, BSTR strValue); [id(20)] void NotifyLineAction(long lPage, long lStartPos, long lEndPos); [id(21)] void NotifyDocumentEvent(BSTR strName); [id(22)] void NotifyAfterAction(long lActionType, long lType, BSTR strName, BSTR strValue); [id(23)] void NotifyChangeStatus(long lStatusType); [id(24)] void NotifyPressPen(long lScreenX, long lScreenY, long lPress); [id(25)] void NotifyAsyncCall(long lCallID, long lRet, BSTR strRet); [id(30)] aip窗口关闭事件 */ /****************************************************************************************************
方法名:OpenFileEx 打开文档 参 数:url 可以是服务器http路径:http://127.0.0.1/test.pdf
也可以是本地文件路径:c://test.pdf
也可以是文件流:http://127.0.0.1/GetFile.aspx
filetype 文档类型,可以是doc,docx,xls,xlsx,pdf
*****************************************************************************************************/ async function OpenFileEx(url, filetype) { var IsOpen = awaitLoadFileEx(url, filetype, 0, 0, "", "", "", ""); if (IsOpen != 1) { ShowMessage("打开文档失败!", "提示", 0, "", "", "", ""); } opneListenEvent(); } /****************************************************************************************************
方法名:OpenFileBase64 打开Base64编码的文档 参 数:pcBase64String 加载文件由GetCurrFileBase64生成的字符串
*****************************************************************************************************/ async function OpenFileBase64(pcBase64String) {
pcBase64String = pcBase64String || "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
var IsOpen = await LoadFileBase64(pcBase64String, "", "", "", ""); if (PlatForm() == "Linux" && IsOpen == 0) { //await ShowMessage("打开base64失败!","提示",0,"","","","");
}
if (PlatForm() == "Windows" && IsOpen != 0) { //await ShowMessage("打开base64失败!","提示",0,"","","","");
} // opneListenEvent();
} /****************************************************************************************************
方法名:AddSeal 手动盖章或手写 参 数:usertype 用户类型:0 测试用户,1 本地key用户,2 本地注册用户,3 服务器远程登录 doaction 操作类型:0 盖章,1 手写。 user 用户名: 当usertype为1,2时,值为用户真实姓名,可以为空获则取证书用户名。 当usertype为3时,值为印章平台创建的userid,插key时可以传空 pwd 密码 httpaddr 服务器地址: 只有当usertype为3时需要传,其他为空。
*****************************************************************************************************/ async function AddSeal(usertype, doaction, user, pwd, httpaddr) { // ShowMessage("打开文档失败!","提示",0,"","","","");
var islogin; // ShowMessage("登录失败!返回值为:"+islogin,"错误",0,"","","","");
if (usertype == 0) { islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", ""); } else if (usertype == 1) { islogin = await Login(user, 1, 65535, "", "", "", "", "", ""); } else if (usertype == 2) { islogin = await Login(user, 2, 65535, "", "", "", "", "", ""); } else if (usertype == 3) { islogin = await Login(user, 3, 65535, pwd, httpaddr, "", "", "", ""); } else { await ShowMessage("用户类型参数错误,将以测试用户身份登录!", "提示", 0, "", "", "", ""); islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", ""); } //alert("登录失败!返回值为:"+islogin)
if (islogin != 0) { //alert(islogin)
console.log(islogin); console.log(typeof (islogin)); await ShowMessage("登录失败!返回值为:" + parseInt(islogin) + "", "提示", 0, "", "", "", ""); //ShowMessage("登录失败!返回值为:"+islogin,"提示",0,"","","","");
return islogin; } else { console.log(islogin + "1") if (doaction == 0) { await CurrAction(2568, "", "", "", ""); } else if (doaction == 1) { await CurrAction(264, "", "", "", ""); } else { await ShowMessage("操作类型参数错误!", "错误", 0, "", "", "", ""); return false; } } } /****************************************************************************************************
方法名:AutoSeal 自动盖章 参 数:usertype 用户类型:0 测试用户,1 本地key用户,2 服务器key用户,3 服务器口令用户 doaction 操作类型:0 普通印章,1 右骑缝章,2对开骑缝 searchtype 定位盖章位置类型:只对普通印章doaction=0时有效,0 绝对坐标,1 文字定位 searchstring 定位信息:只对普通印章doaction=0时有效 searchtype为0时,searchstring为x:y:pageindex格式,即200:500:0 x为横向坐标1-50000,y为纵向坐标1-50000,pageindex为0表示在第1页盖章 searchtype为1时,searchstring为要查找的文字字符串 user 用户名: 当usertype为1,2时,值为用户真实姓名,可以为空获则取证书用户名。 当usertype为3时,值为印章平台创建的userid,插key时可以传空 pwd 密码 httpaddr 服务器地址: 只有当usertype为3时需要传,其他为空。
*****************************************************************************************************/ async function AutoSeal(usertype, doaction, searchtype, searchstring, user, pwd, httpaddr) { var islogin; if (usertype == 0) { islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", ""); } else if (usertype == 1) { islogin = await Login(user, 1, 65535, "", "", "", "", "", ""); } else if (usertype == 2) { islogin = await Login(user, 2, 65535, "", "", "", "", "", ""); } else if (usertype == 3) { islogin = await Login(user, 3, 65535, pwd, httpaddr, "", "", "", ""); } else { await ShowMessage("用户类型参数错误,将以测试用户身份登录!", "提示", 0, "", "", "", ""); islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", ""); } if (islogin != 0) { await ShowMessage("登录失败!返回值为:" + parseInt(islogin), "错误", 0, "", "", "", ""); return islogin; } else { var num = await GetPageCount("", "", "", ""); if (doaction == 0) { var str = searchstring.split(":"); var page = ""; if (searchtype == 0) { var isseal = await AddQifengSeal(0, str[2] + "," + str[0] + ",0," + str[1], "", "AUTO_ADD_SEAL_FROM_PATH"); if (isseal != 1) { await ShowMessage("盖章失败!返回值为:" + parseInt(isseal), "错误", 0, "", "", "", ""); } return isseal; } else if (searchtype == 1) { num = num - 1; //最后往前找,去一个
var isseal = await AddQifengSeal(0, "AUTO_ADD:0," + num + ",0,-50000,1," + searchstring + ")|(0,", "", "AUTO_ADD_SEAL_FROM_PATH"); if (isseal != 1) { await ShowMessage("盖章失败!返回值为:" + parseInt(isseal), "错误", 0, "", "", "", ""); } return isseal; } } else if (doaction == 1) { var page = ""; for (var i = 1; i < num; i++) { page += i + ","; } if (num > 1) { var bl = 100 / (num); var isseal = await AddQifengSeal(0, 0 + ",25000,1,3," + bl + "," + page, "", "AUTO_ADD_SEAL_FROM_PATH"); if (isseal != 1) { await ShowMessage("盖章失败!返回值为:" + parseInt(isseal), "错误", 0, "", "", "", ""); } return isseal; } else { await ShowMessage("文档页数过少无法盖骑缝章!", "错误", 0, "", "", "", ""); return "-100"; } } else if (doaction == 2) { var snum1 = await GetNoteNum(251, "", "", "", ""); console.log("snum1:" + snum1) if (snum1 == 0) { await ShowMessage("获取节点个数失败!", "错误", 0, "", "", "", ""); return "-100"; } for (var i = 0; i < num - 1; i++) { var isseal = await AddQifengSeal(0, i + ",25000,2,3,50,1", "", "AUTO_ADD_SEAL_FROM_PATH"); } var snum2 = await GetNoteNum(251, "", "", "", ""); console.log("snum2:" + snum2) if (snum2 > snum1) { return "1"; } else { await ShowMessage("对开骑缝章盖章失败!", "错误", 0, "", "", "", ""); return "-100"; } } } } /****************************************************************************************************
方法名:SaveToS 保存文档 参 数:savetype 文档保存方式:0 保存本地,1 保存到服务器 filepath 文档保存路径: savetype为0时为本地路径,可以为空,为空会弹出地址框,例如c:/test/1.pdf savetype为1时为服务器路径,例如http://127.0.0.1/getfile.php,地址为文件接收服务器地址,接收文件流FileBlod
filecode 文档惟一标示: savetype为0时为文档类型,值可以为doc,pdf,aip,word,jpg,gif,bmp等 savetype为1时为文档唯一标示,用做服务器接收的参数FileCode
*****************************************************************************************************/ async function SaveToS(savetype, filepath, filecode, TempCount) { var TempCount2 = await GetNoteNum(251, "", "", "", ""); if (TempCount >= TempCount2) {
await ShowMessage("盖章失败,请退出后重试!", "错误", 0, "", "", "", ""); } else { if (savetype == 0) { var issave = await SaveTo(filepath, filecode, 0, "", "", "", ""); if (issave == 0) { await ShowMessage("保存失败!", "错误", 0, "", "", "", ""); } } else if (savetype == 1) { if (PlatForm() == "Windows") { await HttpInit("", "", "", ""); //初始化HTTP引擎。
await SetValue("ADD_FORCETYPE_VALUE2", "32768", "", "", "", ""); //上传流格式保持原文件格式
await HttpAddPostString("FileCode", filecode, "", "", "", ""); //设置上传变量FileCode文档惟一标示。
await HttpAddPostString("FileName", filecode, "", "", ""); await HttpAddPostString("FileType", "pdf", "", "", ""); await HttpAddPostCurrFile("FileBlod", "", "", "", ""); //设置上传当前文件,文件标识为FileBlod。
// HttpAddPostFile("FileBlod",tempFile, "", "", "", "");; //设置上传当前文件,文件标识为FileBlod。
//设置header头
await SetValue("SET_CURRENT_COOKIE", "COOKIE:LOGIN_TEST=somevalue;KEY=asdfdf\r\nSSTEST:key1=123;key2=456", "", "", "");//xc下只\n win下\r\n
var ispost = await HttpPost(filepath, "", "", "", ""); //上传数据。
console.log("ispost:" + ispost); if (ispost == '"ok"') { hideAipWnd('ExClose', '', ''); /* ShowMessage("上传成功!", "提示", 0, "", "", "", "");*/ } else { console.log("上传失败"); await ShowMessage("文档上传失败!错误代码:" + parseInt(ispost), "错误", 0, "", "", "", ""); } }
if (PlatForm() == "Linux") { var ispost = await SaveFile_Linux(filepath, '', '', '', ''); if (ispost) ShowMessage("上传成功!", "提示", 0, "", "", "", ""); else await ShowMessage("文档上传失败!错误代码:" + ispost, "错误", 0, "", "", "", ""); } } else { await ShowMessage("SaveTo方法参数错误!", "错误", 0, "", "", "", ""); } } } /****************************************************************************************************
方法名:FilePrint 打印文档 参 数:plog 0快速打印,1有打印对话框
*****************************************************************************************************/ async function FilePrint(plog) {
var isprint; if (PlatForm() == "Linux") { isprint = await PrintDoc_Linux(1, plog, '', '', '', '', ''); } else { isprint = await PrintDoc(1, plog, "", "", "", ""); } if (isprint == 0) { await ShowMessage("打印失败!", "错误", 0, "", "", "", ""); } } /****************************************************************************************************
方法名:FileMerge 合并文件 参 数:filepath 要合并文件路径,如果只为空则插入一个空白页 page 文件要插入的页index,即插入到第一页值为0
*****************************************************************************************************/ async function FileMerge(filepath, page) { //var islogin = await Login("", 1, 65535, "", "", "", "", "", "");
//if (islogin != 0) {
// await ShowMessage("登录失败!返回值为:" + parseInt(islogin), "错误", 0, "", "", "", "");
// return islogin;
//} else {
var isMerge = 0; if (filepath == "") { if (PlatForm() == "Linux") isMerge = await InsertEmptyPage(page, 0, 50000, 50000, "", "", "", ""); else isMerge = await InsertEmptyPage(page, 0, 0, 0, "", "", "", ""); } else { isMerge = await MergeFile(page, filepath, "", "", "", ""); await SetPageMode(1, 100, "", "", "", "");//设置当前显示模式为自定义模式,缩放比例为100%。
await SetCurrPage(0, "", "", "", "");//设置当前页索引
} if (isMerge == 0) { await ShowMessage("合并文档失败!", "错误", 0, "", "", "", ""); } /*}*/ } /****************************************************************************************************
方法名:SetPenwidth 设置手写笔宽 参 数:无
*****************************************************************************************************/ async function SetPenwidth() { await SetCurrPenWidth(-1, "", "", "", "");//1-28为笔宽范围 -1弹出笔宽设置对话框 用户自行选择
} /****************************************************************************************************
方法名:SetColor 设置手写笔颜色 参 数:无
*****************************************************************************************************/ async function SetColor() { await SetCurrPenColor(-1, "", "", "", "");//BBGGRR 黑色0 红色FF 255 蓝色FF0000 16711680 白色FFFFFF 16777215,-1弹出笔颜色设置对话框 用户自行选择
} /****************************************************************************************************
方法名:SetPressure 设置手写压感 参 数:无
*****************************************************************************************************/ async function SetPressure() { await SetPressurelevel(0, "", "", "", "");//1-12压感级别 0弹出压感设置对话框 用户自行选择
} /****************************************************************************************************
方法名:SetAction 设置鼠标状态 参 数:SetLog 设置状态:1 浏览,2 文字选择
*****************************************************************************************************/ async function SetAction(SetLog) { await CurrAction(SetLog, "", "", "", ""); } /****************************************************************************************************
方法名:DoAction 设置恢复或撤销 参 数:SetLog 设置状态:1 单步撤销,2 全部撤销,3 单步恢复,4 全部恢复
*****************************************************************************************************/ async function DoAction(SetLog) { if (SetLog == 1) { await Undo("", "", "", ""); } else if (SetLog == 2) { await UndoAll("", "", "", ""); } else if (SetLog == 3) { await Redo("", "", "", ""); } else if (SetLog == 4) { await RedoAll("", "", "", ""); } } /****************************************************************************************************
方法名:SetPageView 设置视图 参 数:SetLog 设置操作状态:1 原始大小,2 适应宽度,3 窗口模式,4 双页显示,5 平滑显示,6 翻页模式,7 格式清除
*****************************************************************************************************/ async function SetPageView(SetLog) { if (SetLog == 1) { await SetPageMode(1, 100, "", "", "", ""); //自定义模式 参数二为放大缩小比例 传0则弹出缩放比例对话框
} else if (SetLog == 2) { await SetPageMode(2, 100, "", "", "", ""); } else if (SetLog == 3) { await SetPageMode(4, 100, "", "", "", ""); } else if (SetLog == 4) { await SetPageMode(8, 2, "", "", "", ""); } else if (SetLog == 5) { await SetPageMode(16, 1, "", "", "", ""); } else if (SetLog == 6) { await SetPageMode(32, 1, "", "", "", ""); } else if (SetLog == 7) { await SetPageMode(8, 1, "", "", "", ""); await SetPageMode(16, 0, "", "", "", ""); await SetPageMode(32, 0, "", "", "", ""); } else { await ShowMessage("设置视图参数错误!", "错误", 0, "", "", "", ""); return false; } } /****************************************************************************************************
方法名:ShowToolBar 设置工具栏 参 数:SetLog 设置状态:0 隐藏,1 显示
*****************************************************************************************************/ async function ShowToolBar(SetLog) { await SetShowToolBar(SetLog, "", "", "", ""); } /****************************************************************************************************
方法名:ShowDefMenu 设置菜单 参 数:SetLog 设置状态:0 隐藏,1 显示
*****************************************************************************************************/ async function ShowDefMenu(SetLog) { await SetShowDefMenu(SetLog, "", "", "", ""); } /****************************************************************************************************
方法名:ShowScrollBarButton 设置滚动条 参 数:SetLog 设置状态:2 隐藏滚动条,1 隐藏滚动条的工具栏,0 显示滚动条
*****************************************************************************************************/ async function ShowScrollBarButton(SetLog) { await SetShowScrollBarButton(SetLog, "", "", "", ""); } /****************************************************************************************************
方法名:ShowFullScreen 设置全屏 参 数:SetLog 设置状态:1全屏,0正常
*****************************************************************************************************/ async function ShowFullScreen(SetLog) { await SetShowFullScreen(SetLog, "", "", "", ""); } /****************************************************************************************************
方法名:SearchText 查找文字 参 数:stxt 要查找的文字 matchcase 是否区分大小写 0区分 1不区分 findnext 查找位置 0从头查找 1查找下一个
*****************************************************************************************************/ async function FZSearchText(stxt, matchcase, findnext) { await SearchText(stxt, matchcase, findnext, "", "", "", ""); } /****************************************************************************************************
方法名:AddBarcode 添加二维条码 参 数:
*****************************************************************************************************/ async function AddBarcode(BarcodeStr, page, Xpos, Ypos, Zoom) { //Zoom 图片缩放比例(百分比)+二维码类型x65536(仅对二维码类型) 0-24 PDF417 200 QR
var islogin = await Login("HWSEALDEMO**", 4, 65535, "DEMO", "", "", "", "", ""); if (islogin != 0) { await ShowMessage("登录失败!返回值为:" + parseInt(islogin), "错误", 0, "", "", "", ""); return islogin; } else { await InsertPicture("barcode", "BARCODEDATA:" + BarcodeStr, page, Xpos, Ypos, Zoom, "", "", "", ""); } }
//添加水印
async function addwater() { if (PlatForm() == "Linux") { await addTrackInfo_Linux(); } else { await SetWaterMarkMode(2, '', '', '', ''); //设置模式 设置1 居中 (文字)。 2 平铺 (文字)。 3 居中带阴影(文字)。 4 平铺带阴影(文字)。 7 指定像素值。 0去掉全局水印
await SetWaterMarkTextOrPath("123", '', '', '', ''); await SetWaterMarkPosX(100, '', '', '', ''); await SetWaterMarkPosY(100, '', '', ''); } }
async function delwater() { if (PlatForm() == "Linux") { await DelTrackInfo_Linux('', '', '', ''); } else { await SetWaterMarkMode(0, '', '', '', ''); }
}
async function checkapp() { if (PlatForm() == "Windows") { var str = await CheckApp('', '', '', ''); console.log("进程存活状态:" + str); await ShowMessage("进程存活状态:" + str, "错误", 0, "", "", "", ""); }
var str1 = await GetLVersion("", "", "", ""); console.log("版本号" + str1); await ShowMessage("版本号:" + str1, "错误", 0, "", "", "", ""); }
async function verifyNotes() { if (PlatForm() == "Linux") return;
var str = await VerifyNotes('', '', 0, '', '', '', ''); console.log("验证结果:" + str); await ShowMessage("验证结果:" + str, "错误", 0, "", "", "", ""); //var str2=await VerifyNotes('','',1,'','','','');
//console.log("验证结果:"+str2);
} function printWaterTxt() { if (PlatForm() == "Linux") { setDynamicWaterMark(); } else { var str = setdispidShowWM("测试屏幕水印", 48, 0, 0, "45", 0, 1, '', '', '', ''); console.log("printWaterTxt:" + str); } }
async function DeleteWaterTxt() { if (PlatForm() == "Linux") { DelWaterMarkOfTrackInfo_Linux("", "", "", ""); } else {
var str = setdispidShowWM("", 48, 0, 0, "45", 0, 1, '', '', '', ''); console.log("printWaterTxt:" + str); } }
async function getNote() { var User = ""; while (User = await GetNextUser(User, '', '', '', '', '')) {//循环用户
var NoteInfo = ""; while (NoteInfo = await GetNextNote(User, 0, NoteInfo, '', '', '', '')) {//循环节点
console.log("节点信息" + NoteInfo); } }
}
/* 接口原型: void addTrackInfo(String xmlParam, String sImgData = "");
参数说明: xmlParam String类型,添加水印的属性,xml形式的字符串 sImgData String类型,图像数据,base64编码
返回值说明: 无
备注:
传入的xmlParam参数如下: type String类型,水印类型,取值(text/image) text 文字水印 image 图片水印 patterntype String类型,位置,取值(center/tile/pos:居中/平铺/指定位置) startindex String类型,开始页 endindex String类型,结束页 imagefile String类型,图片路径(type为image) content String类型,文字内容(type为text) rotate String类型,旋转角度 opacity String类型,不透明度 fontname String类型,字体名称 Fontsize String类型,字体大小 fontcolor String类型,字体颜色 zoom String类型,缩放百分比 offsetx String类型,X轴位置(单位:毫米) offsety String类型,Y轴位置(单位:毫米)
代码示例: 文字水印: var xmlstr="<trackinfo type=\"text\" patterntype=\"center\" content=\"测试\" rotate=\"0\" opacity=\"100\" fontsize=\"10.5\" fontcolor=\"#00ff00\" zoom=\"1\" offsetx=\"0\" offsety=\"0\"/>"; 图片水印: 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\"/>"; */ async function addTrackInfo_Linux() { // console.log("sTime:",sTime);
// var sComponent = encodeURIComponent(sTime).replace(/%20/g,"\+");//encodeURIComponent(cmddata).replace(/%20/g,"\+")
// console.log("sComponent:",sComponent);
var xmlstr = "<trackinfo type=\"text\" patterntype=\"center\" content=\"我最帅\" rotate=\"0\" opacity=\"100\" fontsize=\"10.5\" fontcolor=\"#00ff00\" zoom=\"1\" offsetx=\"0\" offsety=\"0\"/>"; console.log(xmlstr); await AddTrackInfo_Linux(xmlstr, " ", '', '', '', ''); }
/* 设置屏幕水印
接口原型: void setDynamicWaterMark(String sJson);
参数说明: sJson:String类型,添加屏幕水印的属性,json串
返回值说明: 无
备注:
传入的sJon参数如下: showfalg bool类型,是否显示屏幕水印,1显示 0不显示 printfalg bool类型,是否显示打印水印,1显示 0不显示 type int类型,水印类型,1 图像水印 0文字水印 content string类型,文字内容 fontcolor string类型,文字水印颜色 例:#ffffff fontsize float类型,字体大小 fontname string类型,字体名称 italic bool类型,是否斜体 1 斜体 0非斜体 bold bool类型,是否加粗 1 加粗 0 不加粗 underline bool类型,是否加下划线 1 有下划线 0无下划线 date bool类型,是否附加日期水印 1 附加 0不附加 sysuser bool类型,是否附加系统用户名水印 1 附加 0不附加 user bool类型,是否附加登录用户名水印 1 附加 0不附加 opacity float类型,不透明度 xspace float类型,X间距(单位:毫米) yspace float类型,Y间距(单位:毫米) rotate float类型,文字旋转角度 pattern int类型,水印样式 0居中1平铺 2指定位置 zoom float类型,缩放比例
代码示例: 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"}'; */ async function setDynamicWaterMark() { 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"}'; console.log("json:", json); await AddDynamicWaterMark_Linux(json, '', '', '', ''); }
//致远项目bug;
async function SetCookie() { // var ret = SetValue("SET_CURRENT_COOKIE","Cookie:JSESSIONID="+state.jsessionId+"\r\n","","","","");
var jsessionId = "1111111" //1.setUserToken
await setUserToken_Linux(jsessionId, '', '', '', ''); //2.setHeaderInfo
await setHeaderInfo_Linux("Cookie", "JSESSIONID=" + jsessionId, '', '', '', ''); }
//0,1,2,4,8
async function GetPagePos() { var ret = await GetCurrPagePos(2, '', '', '', ''); console.log("pagepos:", ret); }
async function SetNaviShowView() { // view_navigation_outline
// performClick
await performClick_Linux("view_navigation_outline", 1, '', '', '', ''); }
|