文档转换
更新时间: 2022/03/14 06:50:55
文档转换,允许用户上传ppt、pptx、pdf等文档到服务器,服务器提供文档转换成图片、保存用户文档列表、删除、查询文档等功能。其中文件的上传下载使用nos的服务实现nim_nos_upload_ex/nim_nos_download/nim_nos_download_ex。
注册转换结果通知回调
注册文档转换的结果的回调通知(服务器异步转换,客户端需要等待通知才知道转换结果)
c@param[in] json_extension 无效扩展字段
@param[in] cb 结果回调见nim_doc_trans_def.h,成功返回的json_extension中带有一条记录
@param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
@return void 无返回值
typedef void(*nim_doctrans_reg_notify_cb)(const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data);
示例代码如下:
C++
c++void OnDocInfoCallback(int32_t code, const DocTransInfo& doc_info)
{
}
void foo()
{
nim::DocTrans::RegNotifyCb(&OnDocInfoCallback);
}
C#
c#NIM.DocTransition.DocTransApi.RegisterNotifyCallback(DocTransDelegate cb)
C
cvoid CallbackDocTrans(int32_t code, const char *json_extension, const void *user_data)
{
···
}
typedef void(*void nim_doctrans_reg_notify_cb)(const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data);
void foo()
{
nim_doctrans_reg_notify_cb func = (nim_doctrans_reg_notify_cb) GetProcAddress(hInst, "nim_doctrans_reg_notify_cb");
func("", &CallbackDocTrans, nullptr);
}
查询文档信息
根据文档id查询文档信息
c@param[in] id 文档id
@param[in] json_extension 无效扩展字段
@param[in] cb 结果回调见nim_doc_trans_def.h,成功返回的json_extension中带有一条记录
@param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
@return void 无返回值
typedef void(*nim_doctrans_get_info)(const char *id, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data);
示例代码如下:
C++
c++void OnDocInfoCallback(int32_t code, const DocTransInfo& doc_info)
{
}
void foo()
{
nim::DocTrans::GetInfo("id...", "", const DocInfoCallback& cb);
}
C#
c#private void QueryTransInfoById(string id)
{
NIM.DocTransition.DocTransApi.GetTransitionInfo(id, OnGetTransInfo);
}
private void OnGetTransInfo(int code, DocTransInfo info)
{
//TODO:处理查询文档结果
}
C
cvoid CallbackDocTrans(int32_t code, const char *json_extension, const void *user_data)
{
···
}
typedef void(*nim_doctrans_get_info)(const char *id, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data);
void foo()
{
nim_doctrans_get_info func = (nim_doctrans_get_info) GetProcAddress(hInst, "nim_doctrans_get_info");
func("id...", "", &CallbackDocTrans, nullptr);
}
分页查询文档信息
查询文档信息列表
c@param[in] id 查询的起始docId,若为空,表示从头开始查找,按照文档转码的发起时间降序排列
@param[in] limit 查询的文档的最大数目,有最大值限制,目前为30
@param[in] json_extension 无效扩展字段
@param[in] cb 结果回调见nim_doc_trans_def.h,成功返回的json_extension中带有记录列表
@param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
@return void 无返回值
typedef void(*nim_doctrans_get_info_list)(const char *id, int32_t limit, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data);
示例代码如下:
C++
c++void OnDocInfosCallback(int32_t code, int32_t count, const std::list<DocTransInfo>& doc_infos)
{
}
void foo()
{
nim::DocTrans::GetInfoList("", 30, "", const OnDocInfosCallback& cb);
}
C#
c#/// <summary>
/// 根据文档id查询文档信息
/// </summary>
/// <param name="id">查询的起始docId,若为空,表示从头开始查找,按照文档转码的发起时间降序排列</param>
/// <param name="limit">查询的文档的最大数目,有最大值限制,目前为30</param>
/// <param name="cb"></param>
NIM.DocTransition.DocTransApi.GetTransitionInfoList(string id, int limit, GetTransListDelegate cb)
C
cvoid CallbackDocTrans(int32_t code, const char *json_extension, const void *user_data)
{
···
}
typedef void(*nim_doctrans_get_info_list)(const char *id, int32_t limit, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data);
void foo()
{
nim_doctrans_get_info_list func = (nim_doctrans_get_info_list) GetProcAddress(hInst, "nim_doctrans_get_info_list");
func("", 30, "", &CallbackDocTrans, nullptr);
}
删除文档信息
根据文档id删除服务器记录,对于正在转码中的文档,删除后将不会收到转码结果的通知
c@param[in] id 文档id
@param[in] json_extension 无效扩展字段
@param[in] cb 结果回调见nim_doc_trans_def.h,返回的json_extension无效
@param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
@return void 无返回值
typedef void(*nim_doctrans_del_info)(const char *id, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data);
示例代码如下:
C++
c++void OnDocInfoCallback(int32_t code, const DocTransInfo& doc_info)
{
}
void foo()
{
nim::DocTrans::DeleteInfo("id...", "", const OnDocInfoCallback& cb);
}
C#
c#/// <summary>
/// 根据文档id删除服务器记录,对于正在转码中的文档,删除后将不会收到转码结果的通知
/// </summary>
/// <param name="id">文档id</param>
/// <param name="cb"></param>
NIM.DocTransition.DocTransApi.DeleteTransition(string id, DocTransDelegate cb)
C
cvoid CallbackDocTrans(int32_t code, const char *json_extension, const void *user_data)
{
···
}
typedef void(*nim_doctrans_del_info)(const char *id, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data);
void foo()
{
nim_doctrans_del_info func = (nim_doctrans_del_info) GetProcAddress(hInst, "nim_doctrans_del_info");
func("id...", "", &CallbackDocTrans, nullptr);
}
文档源的下载地址
拼接文档源的下载地址
c@param[in] url_prefix 文档信息中的url前缀
@param[in] file_type 文档源类型
@return char * 返回文档源的下载地址,需要上层调用nim_global.h提供的内存释放接口释放。
typedef char *(*nim_doctrans_get_source_file_url)(const char *url_prefix, NIMDocTranscodingFileType file_type);
示例代码如下:
C++
c++std::string foo()
{
return nim::DocTrans::GetSourceFileUrl("http....", kNIMDocTranscodingFileTypePPT);
}
C#
c#private void GetSourUrl(DocTransInfo info)
{
var sourceUrl = NIM.DocTransition.DocTransApi.GetSourceFileUrl(info.UrlPrefix, info.SourceFileType);
}
C
ctypedef char *(*nim_doctrans_get_source_file_url)(const char *url_prefix, NIMDocTranscodingFileType file_type);
typedef void (*nim_global_free_buf)(void *data);
void foo()
{
nim_doctrans_get_source_file_url func = (nim_doctrans_get_source_file_url) GetProcAddress(hInst, "nim_doctrans_get_source_file_url");
nim_global_free_buf free_func = (nim_global_free_buf) GetProcAddress(hInst, "nim_global_free_buf");
const char *url = func("http....", kNIMDocTranscodingFileTypePPT);
....
free_func((void *)url);
}
文档图片的下载地址
拼接文档图片的下载地址
c@param[in] url_prefix 文档信息中的url前缀
@param[in] img_type 文档转换的图片类型
@param[in] quality 需要的图片清晰度
@param[in] page_num 图片页码(从1开始计算)
@return char * 返回文档图片的下载地址,需要上层调用nim_global.h提供的内存释放接口释放。
typedef char *(*nim_doctrans_get_page_url)(const char *url_prefix, NIMDocTranscodingImageType img_type, NIMDocTranscodingQuality quality, int32_t page_num);
示例代码如下:
C++
c++std::string foo()
{
return nim::DocTrans::GetPageUrl("http....", kNIMDocTranscodingImageTypeJPG, kNIMDocTranscodingQualityHigh, 1);
}
C#
c#private void GetSourUrl(DocTransInfo info)
{
var destUrl = NIM.DocTransition.DocTransApi.GetPageUrl(info.UrlPrefix, info.DestImageType,NIMDocTranscodingQuality.kNIMDocTranscodingQualityHigh, info.PageNum);
}
C
ctypedef char *(*nim_doctrans_get_page_url)(const char *url_prefix, NIMDocTranscodingImageType img_type, NIMDocTranscodingQuality quality, int32_t page_num);
typedef void (*nim_global_free_buf)(void *data);
void foo()
{
nim_doctrans_get_page_url func = (nim_doctrans_get_page_url) GetProcAddress(hInst, "nim_doctrans_get_page_url");
nim_global_free_buf free_func = (nim_global_free_buf) GetProcAddress(hInst, "nim_global_free_buf");
const char *url = func("http....", kNIMDocTranscodingImageTypeJPG, kNIMDocTranscodingQualityHigh, 1);
....
free_func((void *)url);
}
此文档是否对你有帮助?