基于Python使用永中文档转换服务的方式
作者:falling2021 发布时间:2021-09-29 12:26:12
标签:Python,永中文档,转换,服务
因为工作需要,最近开始学习Python;而项目上用到了永中文档转换服务,就想着要不要拿这个练练手。仰仗于Python的易用性,不一会就完成了。现在总结一下,作为二者的简单学习笔记。
1 上传文件再转换
查看了对应的接口文档后,先来上传一个文件试试:
def upload():
url = 'http://172.18.21.87:48080/fcscloud/file/upload'
header = {"Content-Type": "multipart/form-data"}
file = {"file": open('score.xlsx', 'rb')}
result = requests.post(url=url, files=file).json()
print(json.dumps(result, sort_keys=True, indent=2, ensure_ascii=False))
操作成功,文件已经上传,data里就是文件的相对路径了;知道返回数据之后,就可以再调用convert接口进行转换:
def upload():
url = 'http://172.18.21.87:48080/fcscloud/file/upload'
header = {"Content-Type": "multipart/form-data"}
file = {"file": open('score.xlsx', 'rb')}
result = requests.post(url=url, files=file).json()
return result['data']['data']
def convert(srcRelativePath):
url = 'http://172.18.21.87:48080/fcscloud/composite/convert'
data = {'convertType': 61, 'srcRelativePath': srcRelativePath}
result = requests.post(url=url, data=data).json()
print(json.dumps(result, sort_keys=True, indent=2, ensure_ascii=False))
if __name__ == '__main__':
convert(upload())
这边改动一下,把upload接口返回的结果,作为参数传给convert,并且指定convertType也就是转换类型(针对office文件可以用61),同样返回一个json结果。
json结果中包含了一些基本信息,如转换时间、文件信息、转换类型、及错误代码等等;而viewUrl就是文档在线预览的地址,复制到浏览器打开看下
2 复合型接口
刚才是先上传文件,再进行转换的,有没有更简单的办法合二为一呢?永中文档转换服务就提供了这样的复合型接口:
def upload_and_convert():
url = 'http://172.18.21.87:48080/fcscloud/composite/upload'
header = {"Content-Type": "multipart/form-data"}
file = {"file": open('score.xlsx', 'rb')}
data = {"convertType": 61, #转换类型
"wmColor":"blue", #水印颜色
"wmContent":"永中文档转换服务", #水印内容
"wmSize":"50", #水印大小
"wmRotate":0} #水印角度
result = requests.post(url=url, files=file, data=data).json()
# print(result)
print(result['data']['viewUrl'])
根据上文里展示里的json结果,就可以丰富场景和业务了,比如根据错误代码来判断是否转换成功等等,这边为了展示效果,暂时没有考虑一些异常,只取viewUrl预览;同时在参数中,额外加了一些水印相关参数,看看水印的效果如何:
3 针对在线文档的转换接口
考虑到现在很多文件都是在线的,而不手动上传,永中文档转换服务还提供了针对在线文档的转换接口:
def http_file():
url = 'http://172.18.21.87:48080/fcscloud/composite/httpfile'
data = {"convertType": 61,
'fileUrl': "http://172.18.21.87:48080/fcscloud/view/preview/gN-L5i-rqfV3L-5YwdyhbocM4AFZ1qLaNOfR58wqmPzq5yl6Ozaox5FtkOeT3U2dcGH7iZIGEkHe2cYS19931fYVW1WmGxqScQcqTmqfF4k0XJ0n9T43tS0XAWUC9i7ylCA8riwx8vqdy7cdU_MPpdgABhrxJFXkl6fhGj__qRG6-3WWebp0p1RxMpuuGaZNpYzDMjwIfyBsOskCvCMmx1Zm9_hzBCke2CNkWIw2a6lrQXYRDSmEwT8IHxRFsYnKfQ0RnNAc5xTKZVi4ovzMANI5IY9vfOIBLjZyTH4XSj9aAzvjNn69flAzLSbU4aGzgU3VyTFbTwIO3jgfWCPmDYBxOikkjBh7bji6xtunWsA=/"}
result = requests.post(url=url, data=data).json()
print(result['data']['viewUrl'])
同样只取viewUrl预览,在浏览器中访问链接
如果出现以下的错误,说明无法下载到在线文件,想想这也很合理:如果都无法获取文件,又何如进行转换和预览呢?
4 小结
来源:https://juejin.cn/post/7094086748778528782


猜你喜欢
- Python2 和 Python3 是不兼容的,如果碰到无法升级到 Python2 代码,或者同事中有坚守 Python2 阵营的情况,就要
- 本文实例讲述了php实现汉字验证码和算式验证码的方法。分享给大家供大家参考。具体分析如下:大家知道简单数字或者字母验证码很容易被破解,但是算
- 1. Python的figure参数主要有:def figure(num=None, # autoincrement if None, el
- 一、数据地址实体抽取的目的及问题对数据的地址进行实体识别,主要作用是确定我们的数据主体最终可以归到哪一行政单位,从而在各行政单位上对数据主体
- MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。MySQL被广泛地应用在I
- 1 通过System.DBNull判断,网上大部分都使用这个方法。DataTable dt;
- auto-vue-fileauto create .vue file by shell command通过终端自动创建vue文件前言:1:
- 一、常用文件函数库1、basename(); -- 返回路径中的文件名部分。string basename ( string $path [
- 本文研究的主要是Python使用pickle模块存储数据报错解决方法,以代码的形式展示,具体如下。首先来了解下pickle模块pickle提
- 今天老肥让我试试百度知道的新功能:插入地图。该功能需要登录才能操作,因此我意外的发现百度用户登录的弹出层变了。我很喜欢这个改进,利用TAB来
- 数据库 关键字:为了避免在数据库表结构设计过程中使用系统保留关键字我们必须知道数据库存在哪些关键字,接下来会列出mysql、oracle、s
- 系统环境:centos7.4一,查看是否安装有数据库:yum list installed | grep mysqld/mariadb二,安
- 经常写 shell 脚本知道,字符串判断可以用 =,!= 数字的判断是 -eq,-ne 等,但是 Python 确不是这样子的。所以作为慢慢
- 场景:集团中心下发本省数据时,并未按地市、业务拆分,现需要按地市、业务拆分并分发到地市。本文利用Python的pandas包实现了以上场景。
- 如何编写一个只在Web服务关闭时执行的程序?如:<SCRIPT LANGUAGE="VBScript"&
- MySQL内外连接表的连接分为内连接和外连接。内连接内连接内连接的SQL如下:SELECT ... FROM t1 INNER JOIN t
- 需求在日常需求中,用户使用手机号或者邮箱登录某一个系统,是一个很常见的操作,那如何在类似手机号或者邮箱这样的字段上建立一个合理的索引呢?前缀
- 控制字符控制字符(Control Character),或者说非打印字符,出现于特定的信息文本中,表示某一控制功能的字符,如控制符:LF(换
- 前言在python中, 切片是一个经常会使用到的语法, 不管是元组, 列表还是字符串, 一般语法就是:sequence[ilow:ihigh
- 1 多线程实现多任务1.1 什么是线程? 进程是操作系统分配程序执行资源的单位,而线程