基于Python实现永中文档在线编辑

1,319 阅读2分钟

目前对于文档在线编辑来说,市面上常见的有永中文档云编辑、腾讯云文档等。我因为项目原因接触到永中的文档云编辑应用,体验感不错,并且大多数开发者都是通过java、js接入的,我呢今天就以python是如何实现永中文档云编辑的服务写点自己的看法。

一、申请应用

首先,我们要在永中云服务的官网open.yozocloud.cn/,进行注册登录。 其次,在管理中心申请云编辑的应用,应用名称自己设置即可。此时会生成appId和appkey. appId和appkey

最后,云编辑一定要设置以http:// 或https:// 开头的回调地址数据回调URL,只要是外网可以访问的用来接收到回调数据的地址即可,IP地址、域名都可以。再新增一个POST请求接口,接口名称设置为:/3rd/edit/callBack。在此过程中要确保自己的回调地址是通的,可以借助postman测一下。

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开档编辑即可。

实现效果