文档转换

文档转换,允许用户上传ppt、pptx、pdf等文档到服务器,服务器提供文档转换成图片、保存用户文档列表、删除、查询文档等功能。其中文件的上传下载使用nos的服务实现nim_nos_upload_ex/nim_nos_download/nim_nos_download_ex。

注册转换结果通知回调

注册文档转换的结果的回调通知(服务器异步转换,客户端需要等待通知才知道转换结果)

@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++

void OnDocInfoCallback(int32_t code, const DocTransInfo& doc_info)
{

}

void foo()
{
    nim::DocTrans::RegNotifyCb(&OnDocInfoCallback);
}

C#

NIM.DocTransition.DocTransApi.RegisterNotifyCallback(DocTransDelegate cb)

C

void 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查询文档信息

@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++

void OnDocInfoCallback(int32_t code, const DocTransInfo& doc_info)
{

}

void foo()
{
    nim::DocTrans::GetInfo("id...", "", const DocInfoCallback& cb);
}

C#

private void QueryTransInfoById(string id)
{
    NIM.DocTransition.DocTransApi.GetTransitionInfo(id, OnGetTransInfo);
}

private void OnGetTransInfo(int code, DocTransInfo info)
{
    //TODO:处理查询文档结果
}

C

void 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);
}

分页查询文档信息

查询文档信息列表

@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++

void OnDocInfosCallback(int32_t code, int32_t count, const std::list<DocTransInfo>& doc_infos)
{

}

void foo()
{
    nim::DocTrans::GetInfoList("", 30, "", const OnDocInfosCallback& cb);
}

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

void 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删除服务器记录,对于正在转码中的文档,删除后将不会收到转码结果的通知

@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++

void OnDocInfoCallback(int32_t code, const DocTransInfo& doc_info)
{

}

void foo()
{
    nim::DocTrans::DeleteInfo("id...", "", const OnDocInfoCallback& cb);
}

C#

/// <summary>
/// 根据文档id删除服务器记录,对于正在转码中的文档,删除后将不会收到转码结果的通知
/// </summary>
/// <param name="id">文档id</param>
/// <param name="cb"></param>
NIM.DocTransition.DocTransApi.DeleteTransition(string id, DocTransDelegate cb)

C

void 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);
}

文档源的下载地址

拼接文档源的下载地址

@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++

std::string foo()
{
    return nim::DocTrans::GetSourceFileUrl("http....", kNIMDocTranscodingFileTypePPT);
}

C#

private void GetSourUrl(DocTransInfo info)
{
    var sourceUrl = NIM.DocTransition.DocTransApi.GetSourceFileUrl(info.UrlPrefix, info.SourceFileType);
}

C

typedef 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);
}

文档图片的下载地址

拼接文档图片的下载地址

@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++

std::string foo()
{
    return nim::DocTrans::GetPageUrl("http....", kNIMDocTranscodingImageTypeJPG, kNIMDocTranscodingQualityHigh, 1);
}

C#

private void GetSourUrl(DocTransInfo info)
{
    var destUrl = NIM.DocTransition.DocTransApi.GetPageUrl(info.UrlPrefix, info.DestImageType,NIMDocTranscodingQuality.kNIMDocTranscodingQualityHigh, info.PageNum);
}

C

typedef 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);
}