-
WPS issue on SDK 3.0.1
2020-12-30 05:06:22<p>I have issue with WPS on new SDK 3.0.1. WPS not working, and finally code is 23: user_interface.h: REASON_802_1X_AUTH_FAILED = 23, /<em> 11i </em>/ log: mode : sta(5c:cf:7f:XX:XX:XX) add if0 ... -
java sdk平台_账号授权 - Java版SDK - 《WPS开放平台技术文档》 - 书栈网 · BookStack...
2021-03-06 04:19:29Java版SDK使用说明授权模块不是独立的应用,是其他应用模块接入的前提,申请其他应用时,都需要一并申请账号授权的能力。当申请了其他的能力并选择使用Java版SDK接入时,可参考以下的SDK接口说明。若还未下载SDK,请...Java版SDK
使用说明授权模块不是独立的应用,是其他应用模块接入的前提,申请其他应用时,都需要一并申请账号授权的能力。当申请了其他的能力并选择使用Java版SDK接入时,可参考以下的SDK接口说明。若还未下载SDK,请先下载SDK。
SDK获取开发语言资源下载环境要求Java适用于Java语言、jdk版本1.7以上的环境
SDK相关接口调用
注意: 在调用SDK的支付相关接口前,需要先配置SDK的应用信息:
publicstaticvoidsetConfig(Stringappid,StringappKey);
参数说明
参数参数类型说明appidstring应用唯一标识
appKeystring应用秘钥
调用方式:Config.setConfig(appId, appKey);
SDK接口说明如下:
1, 通过code换取网页授权access_token
通过code换取网页授权access_token
publicstaticTokengetToken(Stringcode);
尤其注意:由于应用appkey和获取到的access_token安全级别比较高,后续刷新access_token、通过access_token获取用户信息等步骤,必须从服务器调用接口。
参数说明
参数参数类型说明codestring填写第一步获取的code参数
调用方式:Token token = OAuth2.getToken(code);
2, 刷新access_token (如果需要)publicstaticTokenrefreshAccessToken(Stringrefresh_token);
由于access_token的有效期较短,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为90天,当refresh_token失效之后,需要用户重新授权。使用refresh_token刷新access_token时,会返回一个新的refresh_token。
参数说明
参数参数类型说明refresh_tokenstring填写通过code获取到的refresh_token参数
调用方式:Token token = OAuth2.refreshAccessToken(refreshToken);
3, 拉取用户信息publicstaticUserInfogetUserInfo(Stringaccess_token,Stringopenid);
参数说明
参数参数类型说明access_tokenstringaccess_token
openidstring用户标识openid
调用方式:UserInfo userInfo = OAuth2.getUserInfo(accessToken, openId);
4, 获取RPCTOken(RPC)publicstaticStringgetRPCToken(Stringaccess_token,Stringscope);
由于access_token的安全级别比较高,当需要客户端调用某些接口时,需要通过access_token换取一个rpc_token。客户端可以通过rpc_token直接调用接口。
参数说明
参数参数类型说明access_tokenstringaccess_token
scopestring用户授权的作用域(share_file,upload_file,get_user_info)
调用方式:String rpcToken = OAuth2.getRPCToken(accessToken);
5, 检测RPCTOken的权限publicstaticbooleancheckRPCToken(Stringrpc_token,Stringscope);
参数说明参数参数类型说明rpc_tokenstringrpc_token
scopestring用户授权的作用域
调用方式:boolean result = OAuth2.checkRPCToken(rpcToken, scope);
-
android 读取wps_Android 默认使用wps打开本地文档
2021-01-12 06:27:52最近开发一个需求是使用wps打开本地的文档,所以记录一下方便以后查阅对于Android 7.0 以后文件的读写 请参照一下链接https://www.jianshu.com/p/5ebfa842e6c1如何跳过 7.0对文件访问的权限目前我知道的有以下两点1...最近开发一个需求是使用wps打开本地的文档,所以记录一下方便以后查阅
对于Android 7.0 以后文件的读写 请参照一下链接
https://www.jianshu.com/p/5ebfa842e6c1
如何跳过 7.0对文件访问的权限目前我知道的有以下两点
1、将build.gradle下的targetSdkVersion改成23以下(这个也会跳过6.0的权限,但很多应用平台以后要对这个进行检测,如果不知道6.0权限检测,可能影响APP上架)
2、在Application的onCreate中加入
//解决FileUriExposedException。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
}
代码:
判断手机是否安装了 wps
private boolean isInstall(Context context, String packageName) {
final PackageManager packageManager = context.getPackageManager();
// 获取所有已安装程序的包信息
List pinfo = packageManager.getInstalledPackages(0);
for (int i = 0; i < pinfo.size(); i++) {
if (pinfo.get(i).packageName.equalsIgnoreCase(packageName))
return true;
}
return false;
}
获取文档类型
private static String getMIMEType(File f) {
String type = "";
String fName = f.getName();
/* 取得扩展名 */
String end = fName.substring(fName.lastIndexOf(".") + 1, fName.length()).toLowerCase();
/* 依扩展名的类型决定MimeType */
if (end.equals("pdf")) {
type = "application/pdf";
} else if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") ||
end.equals("xmf") || end.equals("ogg") || end.equals("wav")) {
type = "audio/*";
} else if (end.equals("3gp") || end.equals("mp4")) {
type = "video/*";
} else if (end.equals("jpg") || end.equals("gif") || end.equals("png") ||
end.equals("jpeg") || end.equals("bmp")) {
type = "image/*";
} else if (end.equals("apk")) {
type = "application/vnd.android.package-archive";
} else if (end.equals("pptx") || end.equals("ppt")) {
type = "application/vnd.ms-powerpoint";
} else if (end.equals("docx") || end.equals("doc")) {
type = "application/vnd.ms-word";
} else if (end.equals("xlsx") || end.equals("xls")) {
type = "application/vnd.ms-excel";
}else if(end.equals("txt")){
type = "text/plain";
}else if(end.equals("html") || end.equals("htm")){
type = "text/html";
} else {
//如果无法直接打开,就跳出软件列表给用户选择
type = "*/*";
}
return type;
}
打开文档
private Intent getWordFileIntent(String Path) {
File file = new File(Path);
Intent intent = new Intent("android.intent.action.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(file);
String type = getMIMEType(file);
if(type.contains("pdf") || type.contains("vnd.ms-powerpoint") || type.contains("vnd.ms-word") || type.contains("vnd.ms-excel") || type.contains("text/plain")|| type.contains("text/html")){
if (isInstall(this, "cn.wps.moffice_eng")) {
intent.setClassName("cn.wps.moffice_eng",
"cn.wps.moffice.documentmanager.PreStartActivity2");
intent.setData(uri);
} else {
intent.addCategory("android.intent.category.DEFAULT");
intent.setDataAndType(uri, type);
}
}else{
intent.addCategory("android.intent.category.DEFAULT");
intent.setDataAndType(uri, type);
}
return intent;
}
应用:
Intent intent = getWordFileIntent("文件路径");
startActivity(intent);
2、如果不是PDF文件
Intent intent = getWordFileIntent(BASE_PATH + list.get(clickPosition).get("fileName"));
try{
startActivity(intent);
}catch (Exception e){
showToast("无可用打开方式,建议下载wps后重试");
}
给用户一个友好提示。
OK,大功告成。
-
vue引入 wps在线编辑版
2020-08-06 14:20:44import * as WPS from './assets/web/web-office-sdk-v1.1.3.es' Vue.prototype.wps = WPS; 点击查看,先调后端给的接口,获取关键的jtoken,jwpsUrl // 修改 async change() { let _this = this; t1.先去官网下载JS
https://wwo.wps.cn/docs-js-sdk/#/base/quick-start
2.main.jsimport * as WPS from './assets/web/web-office-sdk-v1.1.3.es' Vue.prototype.wps = WPS;
点击查看,先调后端给的接口,获取关键的jtoken,jwpsUrl
// 修改 async change() { let _this = this; try { let { data } = await _this.$http.get( `/v1/3rd/file/getViewUrlWebPath?fileId=${_this.fileid}&model=write` ); if (data.success == true) { let form = {}; form.jtoken = data.data.token; form.jwpsUrl = data.data.wpsUrl; sessionStorage.setItem("wps", JSON.stringify(form)); } } catch (error) {} console.log("fileid", this.fileid); // window.open("/onlineediting"); const jump = this.$router.resolve({ name: "onlineediting" }); window.open(jump.href, "_blank"); // this.$router.push("/onlineediting"); }
跳转的页面
<template> <div class="main"> <div v-if="isview"> <viewFile v-if="isview" v-bind:wpsUrl="jwpsUrl" v-bind:token="jtoken" /> </div> </div> </template> <script> import viewFile from "../../components/view"; export default { data() { return { jwpsUrl: "", jtoken: "", isview: true }; }, created() { let acc = JSON.parse(sessionStorage.getItem("wps")); console.log(acc); this.jwpsUrl = acc.jwpsUrl; this.jtoken = acc.jtoken; }, // 通过组件渲染wps的 iframe 框架 components: { viewFile }, methods: { return1() { this.isview = false; console.log(123); } } }; </script> <style lang='scss' scoped> .main { width: 100%; height: 100%; padding: 2vw; display: flex; justify-content: center; align-items: center; position: relative; } .btn { position: fixed; top: 0; right: 10px; z-index: 99; } </style>
5.调用的组件
<template> <div id="viewFile"></div> </template> <script> export default { props: ["wpsUrl", "token"], data() { return { // 是否开启简易模式 simpleMode: false, isCooperUsersAvatarVisible: false, //是否显示协作用户头像 cooperUsersColor: [ { userId: "xxxxxx", // 用户id color: "#F65B90" // 用户光标颜色 } ] }; }, mounted() { this.openWps(this.wpsUrl, this.token); }, methods: { openWps(url, token) { let _this = this; const wps = _this.wps.config({ mode: _this.simpleMode ? "simple" : "normal", mount: document.querySelector("#app"), wpsUrl: url, commandBars: [ // 可以配置多个组件 { cmbId: "HistoryVersion", attributes: { visible: false, // 隐藏组件 enable: false // 禁用组件, 组件显示但不响应点击事件 } }, { cmbId: "HistoryVersionDivider", attributes: { visible: false, // 隐藏组件 enable: false // 禁用组件, 组件显示但不响应点击事件 } }, { cmbId: "HistoryRecord", attributes: { visible: false, // 隐藏组件 enable: false // 禁用组件, 组件显示但不响应点击事件 } } ] }); wps.setToken({ token: token }); let app = wps.Application; // this.console.log(JSON.stringify(app)); } } }; </script> <style lang='scss' scoped> #viewFile { width: 100%; height: 100%; position: relative; left: 0; top: 0; } </style>
会存在用弹框样式变了的问题,可以把组件直接换成iframe
<!-- 查看正文 --> <el-dialog style="width: 100%; height: 100%;" title="正文" :visible.sync="fileDialogVisible" fullscreen="true" > <div style="width: 100%; height: 900px;"> <iframe class="web-office-iframe" id="office-iframe" :src="jwpsUrl" scrolling="no" frameborder="0" allowfullscreen="allowfullscreen" webkitallowfullscreen="true" mozallowfullscreen="true" style="width: 100%; height: 100%; z-index: 3000;" ></iframe> </div> </el-dialog>
参考:
https://blog.csdn.net/qq_23501739/article/details/103032741
https://blog.csdn.net/weixin_42197834/article/details/106274706 -
python wps linux_pywpsrpc: Python bindings for WPS Office RPC (for Linux version only).
2021-02-09 08:13:29pywpsrpcWPS Office for Linux二次开发C++接口Python绑定.Read this in other languages: EnglishWPS Office二次开发接口WPS二次开发接口允许开发者通过给定的接口来调起WPS并执行指定的任务,比如你可以打开、编辑...pywpsrpc
WPS Office for Linux二次开发C++接口Python绑定.
Read this in other languages: English
WPS Office二次开发接口
WPS二次开发接口允许开发者通过给定的接口来调起WPS并执行指定的任务,
比如你可以打开、编辑然后保存文档,转换文档格式等文档自动化操作,又或者将WPS嵌入到自己的程序、进行功能扩展等。
C++ SDK头文件拷贝自wps_cpp,且无任何修改:
Copyright @ 2012-2019, Kingsoft office,All rights reserved.
对于pywpsrpc本身的文档,可跳转到wiki查看。
依赖
Python 3.6+
Qt5 (C++ SDK依赖)
WPS Office for Linux 11.1.0.9080+
sip 6.0+ (仅编译)
qmake (仅编译)
g++ (仅编译)
桌面环境(WPS运行需要)
PS,目前WPS整合模式有BUG,非把WPS嵌入到自己进程的场景建议先切换到多组件模式
如何编译
在项目顶层目录下运行终端执行: sip-build
如果需要查看编译相关输出信息,可添加 --verbose 选项
安装
建议通过PyPi安装:
pip install pywpsrpc
如果默认的源太慢,建议自行搜索添加中国pip源
通过源码编译安装:
先打包执行: sip-wheel
打包完成后再通过pip install pywpsrpc-*.whl命令安装
快速上手
# 第一步先import所需模块(rpcxxxapi,xxx为对应项目的名字)
# rpcwpsapi模块为WPS文字项目的开发接口
# rpcwppapi则是WPS演示的
# rpcetapi毫无疑问就是WPS表格的了
# 另外还有common模块,为前三者的公共接口模块,通常不能单独使用
# 调起WPS必需通过createXXXRpcInstance接口,所以导入它是必需的
# 以WPS文字为例
from pywpsrpc.rpcwpsapi import (createWpsRpcInstance, wpsapi)
from pywpsrpc import RpcIter
# 这里仅创建RPC实例
hr, rpc = createWpsRpcInstance()
# 注意:
# WPS开发接口的返回值第一个总是HRESULT(无返回值的除外)
# 通常不为0的都认为是调用失败(0 == common.S_OK)
# 可以使用common模块里的FAILED或者SUCCEEDED去判断
# 通过rpc实例调起WPS进程
hr, app = rpc.getWpsApplication()
# 比如添加一个空白文档
hr, doc = app.Documents.Add()
# 加点文字
selection = app.Selection
selection.InsertAfter("Hello, world")
# 将前面插入的"Hello, world"加粗
selection.Font.Bold = True
# 光标移到末尾
selection.EndKey()
# 再插入空段
selection.InsertParagraph()
# 光标移到新段
selection.MoveDown()
# 再码些文字
selection.TypeText("pywpsrpc~")
# 使用RpcIter遍历所有段
paras = doc.Paragraphs
for para in RpcIter(paras):
print(para.Range.Text)
# 或者通过索引方式
for i in range(0, paras.Count):
# 注意:首个元素总是从1开始
print(paras[i + 1].OutlineLevel)
def onDocumentBeforeSave(doc):
# 如果想取消当前文档保存,第二个返回值设为True
print("onDocumentBeforeSave called for doc: ", doc.Name)
# SaveAsUI, Cancel
return True, False
# 注册文档保存前通知
rpc.registerEvent(app,
wpsapi.DIID_ApplicationEvents4,
"DocumentBeforeSave",
onDocumentBeforeSave)
# 保存文档, onDocumentBeforeSave会被调用到
doc.SaveAs2("test.docx")
# 退出WPS进程
# 使用wpsapi.wdDoNotSaveChanges来忽略文档改动
app.Quit(wpsapi.wdDoNotSaveChanges)
例子
在服务器上运行
-
python wps linux_GitHub - timxx/pywpsrpc: Python bindings for WPS Office RPC (for Linux)
2021-01-13 12:47:43pywpsrpcWPS Office for Linux二次开发C++接口Python绑定.Read this in other languages: EnglishWPS Office二次开发接口WPS二次开发接口允许开发者通过给定的接口来调起WPS并执行指定的任务,比如你可以打开、编辑... -
接入wps实现预览功能
2021-02-23 11:48:251:wps官网地址:https://open.wps.cn/docs/wwo/access/sdk-demo 选择下载对应的开发语言DEMO(需要注册,并生成文档预览) 2:拿到注册后的文件,并新建预览编辑服务(保证地址为外网访问) 3:直接前端访问所下载... -
Android wps文件下载、预览
2020-07-13 18:21:40Android wps文件下载、预览跳转浏览器打开下载采用TbsSDK可App内部查看文件 跳转浏览器打开下载 这中方案是最简单的,直接跳转到我们手机浏览器,浏览器来接管后面用户下载浏览的工作。 情景一 通过一个Button跳转 ... -
Realtek_WPS_user_guide.pdf
2019-07-26 16:43:15and will utilize Realtek 8xxx-SDK to develop their products. 1.3 Definitions of Wi-Fi Protected Setup terminologies (Wi-Fi Protected Setup Specification 1.0h.pdf, p. 11) WPS: Stands for Wi-Fi ... -
android预览word(WPS预览)
2018-01-29 11:22:00在项目中需要加入预览文件功能,在网上搜索了大部分的回答,集合自己的项目综合考虑,调用WPS的方式更加适合自己,简单不用第三方的sdk,但是手机中得安装WPS。下面是代码:(复制的) Intent intent... -
Realtek无线路由rtl819x sdk全套资料.rar
2021-04-02 15:22:41Realtek_WPS_user_guide.pdf RTL819X_Firmware_Release_Note_v3.4.11D-CMCC-Pre6.pdf RTL819X_Firmware_Release_Note_v3.4.11D-CMCC-Pre6a.pdf System_Note.pdf Universal_Repeater_Mode_Guide.pdf Realtek_SDK_... -
wps自动识别目录错误_使用net 5自动识别代码中的错误
2020-09-02 19:53:56wps自动识别目录错误 C#概念 (C# CONCEPTS) .Net SDK now incorporates rich diagnostics and code recommendations in the .NET SDK by default. .Net SDK现在默认情况下在.NET SDK中包含了丰富的诊断和代码建议。... -
paypal_java_wps_toolkit
2015-11-02 11:39:49paypal支付老版的SDK,官网都没维护好,自己好不容易找到的。 -
dotnet OpenXML 解析 WPS 不符合压缩文档规范的文档
2021-01-08 00:29:33我遇到了有老师给我反馈说用我的小工具去辅助编辑课件的时候,遇到了他使用 WPS 制作的文档打开失败,原因是 WPS 制作的一些文档不符合压缩文档规范。而 Office 的基于 ECMA 376 的文档,都是使用标准的 ZIP 压缩... -
wps crashes on esp8266 (GIT8266O-163)
2020-12-08 18:36:54<div><p>On master (v3.2-dev-353-gf49b40e7) and v3.1 (v3.1-51-g913a06a9) I get crashes during WPS handshake, while the same code runs on ESP32/v3.2-111-g524308c98 without a problem. <h2>Environment ... -
MTK_Ralink_ApSoc_SDK编译总结
2014-08-03 11:49:081.SDK没有带Wifi驱动,需要将外部Wifi驱动拷贝到drivers/net/wireless目录,并修改Ralink目录中的...编译到goahead时,有一处错误,是goahead的Makefile(user/goahead/src)问题导致: wps.o依赖于wps_inic.o,但是 -
vue引入 wps在线编辑版,可进行 预览,编辑, 打印等功能。
2020-05-22 10:49:58在官网下载js-sdk js文件 全局引入 import * as WPS from './assets/js/jwps.es6' // 将其挂载到原型对象上 Vue.prototype.wps = WPS; 使用方法 .将其封装为组件 <template> <div id="viewFile... -
WPS通过adb偷取个人隐私, 导致adb自动断开
2016-08-12 14:00:05最近下了WPS,但是用着...发现有2个adb进程 然后分别打开进程位置,第一个是正确的SDK里面的platform-tools下, 而第二个却是在C:\Users\cai\AppData\Roaming\Kingsoft\wps\addons\pool\win-i386\kwpsandroidtools_1.0 -
WPS example does NOT work (GIT8266O-25)
2020-12-02 05:11:42It does restart 7 seconds (watchdog timeout) after calling <a href="https://github.com/espressif/ESP8266_RTOS_SDK/blob/be28244ac0e528a15860e62dbfc88c2a70f96431/examples/wifi/wps/main/wps.c#L112">esp_... -
WebOffice7.0标准版-开发接口SDK
2014-11-12 13:36:30点聚WebOffice系列文档控件,是北京点聚信息技术有限公司经过多年的开发和不断完善,独立自主开发...点聚WebOffice系列文档控件,能够在浏览器窗口中直接编辑Word、Excel、PowerPoint、WPS、CEB等文档并保存到Web服务 -
WebOffice在线编辑Word、Excel、PPT、WPS
2012-12-20 15:50:042.WebOffice接口SDK 3.WebOffice网页接口调用例子 4.DES手写及签章系统(Office签章系统)试用版。 5.演示章及证书 6.点聚产品白皮书 WebOffice组件可以无缝集成点聚公司的电子签章和手写审批类产品。 点聚信息... -
Kernel_2_6_SDK_User_Guide.pdf
2019-07-26 16:37:29realtek无线芯片方案 RTL8192 SDK软件开发指导手册。 AP-Router SDK User Guide ................................................................................................................................ -
Can it do WPS_TYPE_PIN but from the esp side without the need to enter anything on the router ?...
2020-12-02 08:15:56<div><p>Just like a normal wps pin connect app </p><p>该提问来源于开源项目:espressif/ESP8266_RTOS_SDK</p></div> -
关于腾讯TBS预览wps文件的问题!有大神来观摩观摩吗?
2019-08-20 15:42:38com.tencent.smtt.sdk.WebView forumConte = (com.tencent.smtt.sdk.WebView) view.findViewById(R.id.webview); SuperFileView2 mSuperFileView = (SuperFileView2) view.findViewById(R.id.mSuperFileView); ... -
Compiler error after latest Arduino update to the latest code
2020-12-09 13:55:03<p>C:\Users---\Documents\Arduino\hardware\espressif\esp32/tools/sdk/include/esp32/esp_wps.h:86:1: error: C99 designator 'manufacturer' outside aggregate initializer } ^ C:\Users---\Documents... -
Compiler error after latest platform.io update
2020-12-09 04:01:39/Users/to/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32/esp_wps.h:86:1: error: C99 designator 'manuf acturer' outside aggregate initializer } ^ .piolibdeps/... -
UCDOS7.0安装光盘
2016-09-13 10:06:29该版UCDOS有一个错误,就是执行UCSHELL(UCDOS的一个图形操作界面)时会提示找不到SDK.DRV文件,其实该文件就在UCDOS目录下,执行一下COPY C:\UCDOS\SDK.DRV C:\UCDOS\DRV\*.*,将SDK.DRV复制到下一级的DRV目录即可... -
ubuntu14.04/13.10/13.04 安装32位运行库(成熟技术)
2014-07-24 10:31:42如果大家要装wineQQ,androidSDK,WPS,Google Earth, 用GCC编译32位程序,最好是最先限度安装需要的库,但是这回让事情困难很多。简单粗暴的可以安装ia32-libs,来解决一切问题。让64位系统兼容32位程序,像windows... -
PAYPAL EC快速支付接入汇总
2016-12-23 15:53:19Paypal 有两种接入方式比较常用,EC快速支付和wps支付。这里我们只讲EC快速支付。 联系官方获取SDK并成功运行时第一步。 官方给的SDK里有samples DEMO,常用的就是里边的 ExpressCheckout SET/GET/DO/ 以及... -
Android集成腾讯X5实现文档浏览功能
2019-10-19 11:50:19Android内部没有控件来直接显示文档,跳转WPS或其他第三方文档App体验性不好,使用腾讯X5内核能很好的解决的这一问题。 一、下载腾讯X5内核 1.前往https://x5.tencent.com/下载Android的内核,新版本的腾讯X5可以...