目前对于文档在线编辑来说,市面上常见的有永中文档云编辑、腾讯云文档等。我因为项目原因接触到永中的文档云编辑应用,体验感不错,并且大多数开发者都是通过java、js接入的,我呢今天就以python是如何实现永中文档云编辑的服务写点自己的看法。
一、申请应用
首先,我们要在永中云服务的官网open.yozocloud.cn/,进行注册登录。
其次,在管理中心申请云编辑的应用,应用名称自己设置即可。此时会生成appId和appkey.
最后,云编辑一定要设置以http:// 或https:// 开头的回调地址数据回调URL,只要是外网可以访问的用来接收到回调数据的地址即可,IP地址、域名都可以。再新增一个POST请求接口,接口名称设置为:/3rd/edit/callBack。在此过程中要确保自己的回调地址是通的,可以借助postman测一下。
二、Python实现
永中云服务官网上目前已经提供多种开发语言的sdk包,python相关的链接直接贴上。
SDK下载地址cms.yozocloud.cn/info/file/g…
DEMO下载地址cms.yozocloud.cn/info/file/g…
签名方法:
# coding=utf-8
import hashlib
import hmac
sign = 'sign'
def generateSign(secret, params):
s = uniqSortParams(params)
return hmacSHA256(secret, s)
def uniqSortParams(params):
params.pop(sign, None)
result = ''
keys = list(params.keys())
keys.sort()
for key in keys:
values = list(params[key])
if values is not None and len(values) > 0:
values.sort()
for v in values:
result += key + '=' + v
else:
result += key + '='
return result
def hmacSHA256(key, msg):
key = bytes(key, encoding='utf-8')
msg = bytes(msg, encoding='utf-8')
digest = hmac.new(key, msg=msg, digestmod=hashlib.sha256).digest()
code = ''
for b in digest:
code += hex(b & 255 | 256)[3:5]
return code.upper()
if __name__ == '__main__':
params = {"appId": ["123"], "fileVersionIds": ["234", "123"]}
secret = 'qwe1qa'
print(generateSign(secret, params))
在线编辑:
# coding=utf-8
from signclient import generateSign
import requests
secret = '个人appkey值'
params = {
"appId": ["个人appId值"]
}
sign = generateSign(secret, params)
print(sign)
url = 'http://dmc.yozocloud.cn/api/file/upload?appId={}&sign={}'.format('个人appId值', sign)
header = {"Content-Type": "multipart/form-data"}
file = {"file": open("C:\\Users\\user3262\\Desktop\\素材.docx", "rb")}
res = requests.post(url=url, files=file).json()
print(res)
fileVersionId = res['data']['fileVersionId']
params = {"appId": ["个人appId值"],
"fileVersionId": [fileVersionId]
}
sign = generateSign(secret, params)
print(sign)
url = 'http://eic.yozocloud.cn/api/edit/file?appId={}&sign={}&fileVersionId={}'.format('个人appId值', sign, fileVersionId)
print(url)
控制台返回内容:
三、实现效果
编辑页面的预览效果与源文档一致,基本的字体字号、页面布局、批注都能实现。对于在线编辑文档来说,很大可能遇到的需求是限制其他人只读,不可编辑,永中也是给了相应的参数userRight进行设置。关闭编辑文档或者30min未进行任何操作的话,都会保存触发回调。我们就通过新生成的文件版本Id开档编辑即可。