文档转码功能
通过阅读本章节,您将了解文档转码的相关功能与使用方法。文档转码功能可以实现将PPT、PPTX、PDF等文档格式转码为png及jpg格式,借助互动白板进行实时翻页、标注与共享展示,支持在 Web端、PC 端提交文件转码任务,将 ppt 和 pdf 等文档转码为各种清晰度的图片存储在云端,再在各客户端获取、下载使用或者删除转码后的文档。SDK提供文档上传(PC/Web)、下载、删除、查询等文档使用中的各类功能接口。
注册文档转码通知回调
API介绍
注册文档转换的结果的回调通知。服务器转码完成或有结果时,会通知客户端,通过此接口得到文档转码结果。
API原型
C++
static void RegNotifyCb(const DocInfoCallback& cb)
File:nim_cpp_doc_trans.h
Namespace:NIM
Class:DocTrans
C#
public static void RegisterNotifyCallback(DocTransDelegate cb)
public delegate void DocTransDelegate(int code, DocTransInfo info)
Namespace:NIM
Class:DocTransApi
C
void nim_doctrans_reg_notify_cb(const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data)
File:nim_doc_trans.h
参数说明
- C++
参数 | 类型 | 说明 |
---|---|---|
cb | function | 回调函数 |
- C#
参数 | 类型 | 说明 |
---|---|---|
cb | function | 回调函数 |
code | int | 结果错误码 |
info | object | 文档信息 |
- C
参数 | 类型 | 说明 |
---|---|---|
cb | function | 回调函数 |
json_extension | string | 无效扩展字段 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
返回值说明
无返回值。
回调结果:带错误码及文档信息。
- NIMDocTranscodingFailFlag 转码失败原因
枚举定义 | 值 | 说明 |
---|---|---|
kNIMDocTransFailFlagSuccess | 0 | 正常 |
kNIMDocTransFailFlagNotExist | 2 | 找不到文件 |
kNIMDocTransFailFlagFileTypeErr | 3 | 文件类型错误 |
kNIMDocTransFailFlagRequstErr | 4 | 转码请求出现异常 |
kNIMDocTransFailFlagLinkErr | 5 | 转码服务器连接错误 |
kNIMDocTransFailFlagServerErr | 6 | 转码服务器内部错误 |
kNIMDocTransFailFlagPicErr | 7 | 文档转码图片出错 |
kNIMDocTransFailFlagQualityErr | 8 | 图片质量处理错误 |
kNIMDocTransFailFlagPageLimit | 9 | 页数超限 |
kNIMDocTransFailFlagNosErr | 10 | nos回调错误 |
kNIMDocTransFailFlagDocParseErr | 11 | 文档解析出错 |
kNIMDocTransFailFlagUnknown | 100 | 表示未知错误 |
示例
C++
static void DocTransNotifyCallback(int32_t code, const nim::DocTransInfo& doc_info) { if (code == 200) { //转码成功 } } void foo() { nim::DocTrans::RegNotifyCb(DocTransNotifyCallback); }
C#
private void OnTransDocCompleted(int code, DocTransInfo info) { if (code == 200) { //转码成功 } } void RegisterRtsCallback() { NIM.DocTransition.DocTransApi.RegisterNotifyCallback(OnTransDocCompleted); }
C
bool ParseDocTransInfo( const std::string& json, DocTransInfo& info ) { Json::Value value; Json::Reader reader; if (reader.parse(json, value) && value.isObject()) { info.id_ = value[kNIMDocTransId].asString(); info.name_ = value[kNIMDocTransName].asString(); info.source_type_ = (NIMDocTranscodingFileType)value[kNIMDocTransSourceType].asInt(); info.size_ = value[kNIMDocTransSize].asInt64(); info.pic_type_ = (NIMDocTranscodingImageType)value[kNIMDocTransPicType].asInt(); info.state_ = (NIMDocTranscodingState)value[kNIMDocTransState].asInt(); info.url_prefix_ = value[kNIMDocTransUrlPrefix].asString(); info.page_num_ = value[kNIMDocTransPageNum].asInt(); info.ext_ = value[kNIMDocTransExt].asString(); if (value.isMember(kNIMDocTransFilePath)) info.upload_file_path = value[kNIMDocTransFilePath].asString(); if (value.isMember(kNIMDocTransUploadStatus)) info.continue_upload_state_ = (NIMDocContinueUploadState)value[kNIMDocTransUploadStatus].asInt(); if (value.isMember(kNIMDocTransPicInfo)) { auto size = value[kNIMDocTransPicInfo].size(); for (int i = 0; i < (int)size; i++) { PictureInfo pic_info; pic_info.quality_ = (NIMDocTranscodingQuality)value[kNIMDocTransPicInfo][i][kNIMDocTransQuality].asInt(); pic_info.width_ = value[kNIMDocTransPicInfo][i][kNIMDocTransWidth].asInt(); pic_info.height_ = value[kNIMDocTransPicInfo][i][kNIMDocTransHeight].asInt(); pic_info.size_ = value[kNIMDocTransPicInfo][i][kNIMDocTransSize].asInt64(); info.pic_info_.push_back(pic_info); } } return true; } return false; } static void CallbackNotify(int32_t code, const char *json_extension, const void *user_data) { std::string json; json.append(json_extension); ParseDocTransInfo(json, info); } typedef 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(&StartNotifyCallback, NULL); }
文档上传
API介绍
转码文档上传接口。通过扩展的上传文件上传转码文件到服务器。如果上传成功,则等待结果通知。
API原型
C++
static bool UploadResourceEx(const std::string& local_file, const std::string& json_extension, const UploadMediaExCallback& callback_result, const ProgressExCallback& callback_progress = ProgressExCallback(), const SpeedCallback& callback_speed = SpeedCallback(), const TransferInfoCallback& callback_transfer = TransferInfoCallback())
File:nim_cpp_nos.h
Namespace:NIM
Class:NOS
C#
public static void UploadEx(string localFile, HttpExtendedParameters param, UploadCb resCb, IntPtr resData, UploadPrgCb prgCb, IntPtr prgData, UploadSpeedCb speedCb, IntPtr speedData, UploadInfoCb infoCb, IntPtr infoData)
Namespace:NIM
Class:NosAPI
C
void nim_nos_upload_ex(const char *local_file, const char *json_extension, nim_nos_upload_cb_func res_cb, const void *res_user_data, nim_nos_upload_prg_cb_func prg_cb, const void *prg_user_data, nim_nos_upload_speed_cb_func speed_cb, const void *speed_user_data, nim_nos_upload_info_cb_func info_cb, const void *info_user_data)
File:nim_nos.h
参数说明
- C++
参数 | 类型 | 说明 |
---|---|---|
local_file | string | 本地文件的完整路径,路径名必须是utf-8 |
json_extension | string | Json 扩展参数 |
callback_result | function | 上传的结果回调函数 |
callback_progress | function | 上传进度的回调函数 |
callback_speed | function | 上传速度的回调函数 |
callback_transfer | function | 返回最终上传信息的回调函数 |
- C#
参数 | 类型 | 说明 |
---|---|---|
localFile | string | 本地文件的完整路径,路径名必须是utf-8 |
param | string | 扩展参数 |
resCb | function | 上传的结果回调函数 |
resData | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数resCb,不做任何处理! |
prgCb | function | 上传进度的回调函数 |
prgData | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数prgCb,不做任何处理! |
speedCb | function | 上传速度的回调函数 |
speedData | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数speedCb,不做任何处理! |
infoCb | function | 返回最终上传信息的回调函数 |
infoData | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数infoCb,不做任何处理! |
- C
参数 | 类型 | 说明 |
---|---|---|
local_file | string | 本地文件的完整路径,路径名必须是utf-8 |
json_extension | string | Json 扩展参数 |
res_cb | function | 上传的结果回调函数 |
res_user_data | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数res_cb,不做任何处理! |
prg_cb | function | 上传进度的回调函数 |
prg_user_data | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数prg_cb,不做任何处理! |
speed_cb | function | 上传速度的回调函数 |
speed_user_data | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数speed_cb,不做任何处理! |
info_cb | function | 返回最终上传信息的回调函数 |
info_user_data | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数info_cb,不做任何处理! |
- NOS扩展上传\下载接口参数
键常量名 | 键常量值 | 值类型 | 说明 |
---|---|---|---|
kNIMNosLowLimit | low_limit | int | HTTP通用配置,传输速度,每秒字节数(默认10) |
kNIMNosLowTime | low_time | int | HTTP通用配置,传输过程中当low_time秒时间内传输速度小于low_limit时(字节每秒),下载任务会返回超时而取消(默认60) |
kNIMNosTimeout | timeout | int | HTTP通用配置,超时时间,单位ms,下载时最小10000,上传时最小30000,不设置默认30000 |
kNIMNosTaskId | task_id | string | HTTP通用配置,任务ID,上传下载断点续传必填,如果传入的ID是曾经未完成的需要续传功能的传输任务的ID,则会开始续传(用户需要保证ID的唯一性) |
kNIMNosNeedContinueTrans | continue_trans | bool | HTTP通用配置,任务是否需要续传功能 |
kNIMNosFileSize | download_filesize | int64 | HTTP下载任务的文件大小,需要续传功能必填,单位Byte,其他情况不需要填 |
kNIMNosSaveAsFilePath | saveas_filepath | string | HTTP下载任务的文件存放本地路径,不填则默认路径回调中返回 |
kNIMNosUploadType | upload_type | int | NIMNosUploadType HTTP上传任务的类型 |
kNIMNosDocTransName | name | string | (HTTP上传转码文档使用)名称 |
kNIMNosDocTransSourceType | source_type | int | NIMDocTranscodingFileType (HTTP上传转码文档使用)转码源文档的文件类型 |
kNIMNosDocTransPicType | pic_type | int | NIMDocTranscodingImageType (HTTP上传转码文档使用)转码目标图片的文件类型 |
kNIMNosDocTransExt | doc_trans_ext | string | (HTTP上传转码文档使用)文档转换时的扩展参数,在成功后能查询到 |
kNIMNosResId | res_id | string | 上传文件的id,如果是文档转换则为服务器的文档id |
kNIMNosCallId | call_id | string | 上传文件的会话id |
- NIMDocTranscodingFileType转码源文件格式
枚举定义 | 值 | 说明 |
---|---|---|
kNIMDocTranscodingFileTypePPT | 1 | ppt文档 |
kNIMDocTranscodingFileTypePPTX | 2 | pptx文档 |
kNIMDocTranscodingFileTypePDF | 3 | pdf文档 |
- NIMDocTranscodingImageType转码目标图像文件类型
枚举定义 | 值 | 说明 |
---|---|---|
kNIMDocTranscodingImageTypeJPG | 10 | 转码为 jpg 图片 |
kNIMDocTranscodingImageTypePNG | 11 | 转码为 png 图片 |
- NIMDocTranscodingQuality转码图像清晰度
枚举定义 | 值 | 说明 |
---|---|---|
kNIMDocTranscodingQualityHigh | 1 | 高清转码质量 |
kNIMDocTranscodingQualityMedium | 2 | 中等转码质量 |
kNIMDocTranscodingQualityLow | 3 | 低清转码质量 |
返回值说明
- C++
返回接口调用结果。
- C#/C
无返回值
示例
C++
//上传结果回调 void CallbackUpload(nim::NIMResCode res_code, const nim::DownloadMediaResult& result) { if (res_code == kNIMResSuccess) { //上传成功 } else if (res_code == kNIMLocalResMsgNosUploadCancel) { //上传暂停 } else { //上传失败 } } //上传过程回调,参数:当前已上传文件大小, 文件大小, 上传相关信息 void CallbackHttpPro(__int64 completed_size, __int64 file_size, const ProgressData& data) { ... } //上传瞬时速度回调 void CallbackSpeed(__int64 speed) { if (speed > 0) { char res[1024]; sprintf_s(res, "speed : %lld B/s(%lf KB/s)", speed, (static_cast<double>(speed))/1024); } } static __int64 actual_size_ = 0; //上传结束后信息回调,参数:此次上传文件的大小, 平均速度 void CallbackTransferInfo(__int64 actual_size, __int64 speed) { actual_size_ += actual_size; char res[1024]; sprintf_s(res, "average speed : %lld(%lf KB/s)", speed, (static_cast<double>(speed))/1024); sprintf_s(res, "actual size : %lld, block size : %lld", actual_size_, actual_size); } //发起上传任务 void foo_start_http_upload(const std::string& task_uuid) { Json::FastWriter writer; Json::Value value; value[kNIMNosLowLimit] = ; //int(选填) HTTP通用配置,传输速度,每秒字节数(默认10) value[kNIMNosLowTime] = ; //int(选填) HTTP通用配置,传输过程中当low_time秒时间内传输速度小于low_limit时(字节每秒),下载任务会返回超时而取消(默认60) value[kNIMNosTimeout] = ; //int(选填) HTTP通用配置,超时时间,单位ms,下载时最小10000,上传时最小30000,不设置默认30000 value[kNIMNosNeedContinueTrans] = ; //bool 需要支持断点续传True value[kNIMNosTaskId] = task_uuid; //string(断点续传必填) HTTP通用配置,任务ID,如果传入的ID是曾经未完成的传输任务,则会开始续传(用户需要保证ID的唯一性) //文档传输独有 value[nim::kNIMNosUploadType] = nim::kNIMNosUploadTypeDocTrans; value[nim::kNIMNosDocTransName] = file_name; value[nim::kNIMNosDocTransSourceType] = (nim::NIMDocTranscodingFileType)file_type; value[nim::kNIMNosDocTransPicType] = nim::kNIMDocTranscodingImageTypePNG; value[nim::kNIMNosDocTransExt] = ""; nim::NOS::UploadResourceEx(file_path, writer.write(value), &CallbackUpload, &CallbackHttpPro, &CallbackSpeed, &CallbackTransferInfo); } //暂停上传任务 void foo_pause_http_upload(const std::string& task_uuid) { nim::NOS::StopUploadResourceEx(task_uuid); }
C#
//开始上传任务 private void StartUploadEx(string filePath) { DocTransitionParams params = new DocTransitionParams(); params.TaskID = ""; //任务ID,停止上传任务时需要用到该值 //文档传输需要 params.TransitionFileName = "file name"; params.SourceType = NIM.DocTransition.NIMDocTranscodingFileType.kNIMDocTranscodingFileTypePPT; params.PictureType = NIM.DocTransition.NIMDocTranscodingImageType.kNIMDocTranscodingImageTypePNG; params.DocTransitionExt = "custom ext";
NIM.Nos.NosAPI.UploadEx(filePath,params, ResultCb, Marshal.StringToHGlobalAnsi("UploadResult"),
ReportPrg, Marshal.StringToHGlobalAnsi("UploadProgress"),
ReportSpeed, Marshal.StringToHGlobalAnsi("UploadSpeed"),
ReportInfo, Marshal.StringToHGlobalAnsi("UploadInfo"));
}
private void ReportInfo(long actual_upload_size, long upload_speed, string json_extension, IntPtr user_data)
{
//TODO:上传信息
}
private void ReportPrg(long uploaded_size, long file_size, string json_extension, IntPtr user_data)
{
//TODO:上传进度
}
private void ReportSpeed(long upload_speed, string json_extension, IntPtr user_data)
{
//TODO:上传速度
}
private void ResultCb(int rescode, string url, string json_extension, IntPtr user_data)
{
//TODO:上传结果
}
//停止上传,taskId 为调用 UploadEx 时传入的参数,参考 HttpExtendedParameters
NIM.Nos.NosAPI.StopUploadEx(string taskId, string ext = null)
C
//上传结果回调 static void CallbackUploadEx(int res_code, const char *url, const char *json_extension, const void *user_data) { if (res_code == kNIMResSuccess) { //下载成功 } else if (res_code == kNIMLocalResMsgNosDownloadCancel) { //下载暂停 } else { //下载失败 } } //上传过程回调,参数:当前已上传文件大小, 文件大小, 上传相关信息 static void CallbackProgressEx(int64_t completed_size, int64_t total_size, const char *json_extension, const void *callback) { ··· } //上传瞬时速度回调 static void CallbackSpeed(int64_t speed, const char *json_extension, const void *callback) { if (speed > 0) { char res[1024]; sprintf_s(res, "speed : %lld B/s(%lf KB/s)", speed, (static_cast<double>(speed))/1024); } } static __int64 actual_size_ = 0; //上传结束后信息回调,参数:此次上传文件的大小, 平均速度 static void CallbackTransferInfo(int64_t actual_size, int64_t speed, const char *json_extension, const void *callback) { actual_size_ += actual_size; char res[1024]; sprintf_s(res, "average speed : %lld(%lf KB/s)", speed, (static_cast<double>(speed))/1024); sprintf_s(res, "actual size : %lld, block size : %lld", actual_size_, actual_size); } typedef void(*nim_nos_upload_ex)(const char *local_file, const char *json_extension, nim_nos_upload_cb_func callback_result, const void *res_user_data, nim_nos_upload_prg_cb_func prg_cb, const void *prg_user_data, nim_nos_upload_speed_cb_func speed_cb, const void *speed_user_data, nim_nos_upload_info_cb_func info_cb, const void *info_user_data); typedef void(*nim_nos_stop_upload_ex)(const char *task_id, const char *json_extension);
//发起上传任务
void foo_start_http_download(const std::string& task_uuid)
{
Json::FastWriter writer;
Json::Value value;
value[kNIMNosLowLimit] = ; //int(选填) HTTP通用配置,传输速度,每秒字节数(默认10)
value[kNIMNosLowTime] = ; //int(选填) HTTP通用配置,传输过程中当low_time秒时间内传输速度小于low_limit时(字节每秒),下载任务会返回超时而取消(默认60)
value[kNIMNosTimeout] = ; //int(选填) HTTP通用配置,超时时间,单位ms,下载时最小10000,上传时最小30000,不设置默认30000
value[kNIMNosNeedContinueTrans] = ; //bool 需要支持断点续传True
value[kNIMNosTaskId] = task_uuid; //string(断点续传必填) HTTP通用配置,任务ID,如果传入的ID是曾经未完成的传输任务,则会开始续传(用户需要保证ID的唯一性)
//文档传输独有
value[nim::kNIMNosUploadType] = nim::kNIMNosUploadTypeDocTrans;
value[nim::kNIMNosDocTransName] = file_name;
value[nim::kNIMNosDocTransSourceType] = (nim::NIMDocTranscodingFileType)file_type;
value[nim::kNIMNosDocTransPicType] = nim::kNIMDocTranscodingImageTypePNG;
value[nim::kNIMNosDocTransExt] = "";
nim_nos_upload_ex func = (nim_nos_upload_ex) GetProcAddress(hInst, "nim_nos_upload_ex");
func(local_file.c_str(), writer.write(value).c_str(), &CallbackUploadEx, callback_result_userdata, &CallbackProgressEx, callback_progress_pointer, &CallbackSpeed, callback_speed_pointer, &CallbackTransferInfo, callback_transfer_pointer);
}
//暂停上传任务
void foo_pause_http_upload(const std::string& task_uuid)
{
nim_nos_stop_upload_ex func = (nim_nos_stop_upload_ex) GetProcAddress(hInst, "nim_nos_stop_upload_ex");
func(task_uuid.c_str(), nullptr);
}
文档下载
API介绍
文件下载接口。通过拼接得到的页面或者源文件的url,下载文件。
API原型
C++
static bool DownloadResource(const std::string& nos_url, const DownloadMediaCallback& callback_result, const ProgressCallback& callback_progress = ProgressCallback())
static bool DownloadResourceEx(const std::string& nos_url, const std::string& json_extension, const DownloadMediaExCallback& callback_result, const ProgressExCallback& callback_progress = ProgressExCallback(), const SpeedCallback& callback_speed = SpeedCallback(), const TransferInfoCallback& callback_transfer = TransferInfoCallback())
File:nim_cpp_nos.h
Namespace:NIM
Class:NOS
C#
public static void Download(string nosUrl, DownloadResultHandler resHandler, ProgressResultHandler prgHandler, object userData = null)
public static void DownloadEx(string url, HttpExtendedParameters param, DownloadCb resCb, IntPtr resData, DownloadPrgCb prgCb, IntPtr prgData, DownloadSpeedCb speedCb, IntPtr speedData, DownloadInfoCb infoCb, IntPtr infoData)
Namespace:NIM
Class:NosAPI
C
void nim_nos_download(const char *nos_url, nim_nos_download_cb_func res_cb, const void *res_user_data, nim_nos_download_prg_cb_func prg_cb, const void *prg_user_data)
void nim_nos_download_ex(const char *nos_url, const char *json_extension, nim_nos_download_cb_func res_cb, const void *res_user_data, nim_nos_download_prg_cb_func prg_cb, const void *prg_user_data, nim_nos_download_speed_cb_func speed_cb, const void *speed_user_data, nim_nos_download_info_cb_func info_cb, const void *info_user_data)
File:nim_nos.h
参数说明
- C++
参数 | 类型 | 说明 |
---|---|---|
nos_url | string | 文件的下载链接 |
json_extension | string | Json 扩展参数 |
callback_result | function | 下载的结果回调函数 |
callback_progress | function | 下载进度的回调函数 |
callback_speed | function | 下载速度的回调函数 |
callback_transfer | function | 返回最终下载信息的回调函数 |
- C#
参数 | 类型 | 说明 |
---|---|---|
nosUrl | string | 文件的下载链接 |
param | string | 扩展参数 |
resCb | function | 下载的结果回调函数 |
resData | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数resCb,不做任何处理! |
prgCb | function | 下载进度的回调函数 |
prgData | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数prgCb,不做任何处理! |
speedCb | function | 下载速度的回调函数 |
speedData | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数speedCb,不做任何处理! |
infoCb | function | 返回最终下载信息的回调函数 |
infoData | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数infoCb,不做任何处理! |
- C
参数 | 类型 | 说明 |
---|---|---|
nos_url | string | 文件的下载链接 |
json_extension | string | Json 扩展参数 |
res_cb | function | 下载的结果回调函数 |
res_user_data | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数res_cb,不做任何处理! |
prg_cb | function | 下载进度的回调函数 |
prg_user_data | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数prg_cb,不做任何处理! |
speed_cb | function | 下载速度的回调函数 |
speed_user_data | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数speed_cb,不做任何处理! |
info_cb | function | 返回最终下载信息的回调函数 |
info_user_data | IntPtr | APP的自定义用户数据,SDK只负责传回给回调函数info_cb,不做任何处理! |
返回值说明
无返回值。
示例
C++
void DownloadResourceCallback(nim::NIMResCode res_code, const std::string& file_path, const std::string& call_id, const std::string& res_id) { } void DownloadResourceProgressCallback(__int64 downloaded_size, __int64 file_size) { } void foo(const nim::DocTransInfo& doc_info) { std::string url = nim::DocTrans::GetPageUrl(doc_info.url_prefix_, doc_info.pic_type_, nim::kNIMDocTranscodingQualityHigh, page_num); if (!url.empty()) { nim::NOS::DownloadResource(url, &DownloadResourceCallback, &DownloadResourceProgressCallback); } }
C#
void foo(NIM.NIMIMMessage message) { string url = NIM.DocTransition.DocTransApi.GetPageUrl(url_prefix, NIM.DocTransition.NIMDocTranscodingImageType.kNIMDocTranscodingImageTypeJPG, NIM.DocTransition.NIMDocTranscodingQuality.kNIMDocTranscodingQualityHigh, 1); NIM.Nos.NosAPI.Download(url, (rescode, filePath, callId, resId) => { if (rescode == 200) { } }, (prgData) => { }); }
C
void CallbackDownload(int res_code, const char *file_path, const char *call_id, const char *res_id, const char *json_extension, const void *user_data) { ··· } void CallbackProgress(__int64 completed_size, __int64 total_size, const char *json_extension, const void *callback) { ··· } typedef void (*nim_global_free_buf)(void *data); typedef char* (*nim_doctrans_get_page_url)(const char *url_prefix, NIMDocTranscodingImageType img_type, NIMDocTranscodingQuality quality, int32_t page_num); typedef void(*nim_nos_download)(const char *nos_url, nim_nos_download_cb_func callback_result, const void *res_user_data, nim_nos_download_prg_cb_func prg_cb, const void *prg_user_data); void foo(const std::string& url_prefix, NIMDocTranscodingImageType img_type, NIMDocTranscodingQuality quality, int32_t page_num) { nim_doctrans_get_page_url func1 = (nim_doctrans_get_page_url) GetProcAddress(hInst, "nim_doctrans_get_page_url"); const char *url = func1(url_prefix.c_str(), img_type, quality, page_num); nim_nos_download func2 = (nim_nos_download) GetProcAddress(hInst, "nim_nos_download"); func2(url, &CallbackDownload, nullptr, &CallbackProgress, nullptr); nim_global_free_buf free_func = (nim_global_free_buf) GetProcAddress(hInst, "nim_global_free_buf"); free_func((void *)url); }
拉取文档转码信息列表
API介绍
获取自己的文档列表信息。
API原型
C++
static void GetInfoList(const std::string& id, int limit, const std::string& json_extension, const DocInfosCallback& cb)
File:nim_cpp_doc_trans.h
Namespace:NIM
Class:DocTrans
C#
public static void GetTransitionInfoList(string id, int limit, GetTransListDelegate cb)
Namespace:NIM
Class:DocTransApi
C
void nim_doctrans_get_info_list(const char *id, int limit, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data)
File:nim_doc_trans.h
参数说明
- C++
参数 | 类型 | 说明 |
---|---|---|
id | string | 查询的起始docId,若为空,表示从头开始查找,按照文档转码的发起时间降序排列 |
limit | int | 查询的文档的最大数目,有最大值限制,目前为30 |
json_extension | string | 无效扩展字段 |
cb | function | 回调函数 |
- C#
参数 | 类型 | 说明 |
---|---|---|
id | string | 查询的起始docId,若为空,表示从头开始查找,按照文档转码的发起时间降序排列 |
limit | int | 查询的文档的最大数目,有最大值限制,目前为30 |
cb | function | 回调函数 |
- C
参数 | 类型 | 说明 |
---|---|---|
id | string | 查询的起始docId,若为空,表示从头开始查找,按照文档转码的发起时间降序排列 |
limit | int | 查询的文档的最大数目,有最大值限制,目前为30 |
cb | function | 回调函数 |
json_extension | string | 无效扩展字段 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
文档信息扩展参数
for example pic_info:
"pic_info":[{"height":1080,"quality":1,"size":77599,"width":1439},{"height":720,"quality":2,"size":46287,"width":959},{"height":480,"quality":3,"size":27577,"width":639}]
for example one info:
{"ext":"ext_test","id":"8c17c252...","name":"name_test","page_num":0,"pic_type":11,"size":568351,"source_type":2,"state":2,"url_prefix":"http://......"} {"ext":"ext","id":"7b004b82...","name":"name","page_num":1,"pic_info":[...],"pic_type":11,"size":106496,"source_type":1,"state":4,"url_prefix":"http..."}
for example infolist:
{"count":3,"infos":[{"ext":"ext_test" ...},{"ext":"ext_test" ...},{"ext":"ext_test" ...}]}
键常量名 | 键常量值 | 值类型 | 说明 |
---|---|---|---|
kNIMDocTransCount | count | int | 计数 |
kNIMDocTransInfos | infos | key | 分页获取时文档信息列表的key |
kNIMDocTransId | id | string | 标识ID |
kNIMDocTransName | name | string | 转码文档名称 |
kNIMDocTransSourceType | source_type | int | 转码源文档的文件类型NIMDocTranscodingFileType |
kNIMDocTransSize | size | int64 | 文件大小 |
kNIMDocTransPicType | pic_type | int | 转码目标图片的文件类型NIMDocTranscodingImageType |
kNIMDocTransState | state | int | 转码过程状态NIMDocTranscodingState |
kNIMDocTransUrlPrefix | url_prefix | string | 转码后的下载地址前缀 |
kNIMDocTransPageNum | page_num | int | 转码文档总页数 |
kNIMDocTransExt | ext | string | 发起文档转码时的附带信息 |
kNIMDocTransFlag | flag | int | 错误原因NIMDocTranscodingFailFlag,kNIMDocTranscodingStateFailed时有效 |
kNIMDocTransPicInfo | pic_info | key | 图片信息的key;用于描述各个分辨率的信息 |
kNIMDocTransQuality | quality | int | 转码图像清晰度 |
kNIMDocTransWidth | width | int | 图片宽度 |
kNIMDocTransHeight | height | int | 图片宽度 |
kNIMDocTransFilePath | file_path | string | 上传文件的路径 |
kNIMDocTransUploadStatus | upload_status | int | 文件续传状态NIMDocContinueUploadState |
- NIMDocContinueUploadState 续传过程状态
枚举定义 | 值 | 说明 |
---|---|---|
kNIMDocContinueUploadNone | 0 | 没有进行过上传 |
kNIMDocContinueUploading | 1 | 文件续传中 |
kNIMDocContinueUploadFailed | 2 | 文件续传失败 |
kNIMDocContinueUploadCompleted | 3 | 文件续传完成 |
- NIMDocTranscodingState 转码过程状态
枚举定义 | 值 | 说明 |
---|---|---|
kNIMDocTranscodingStatePreparing = 1 | 转码准备中 | |
kNIMDocTranscodingStateOngoing = 2 | 转码进行中 | |
kNIMDocTranscodingStateTimeout = 3 | 转码超时 | |
kNIMDocTranscodingStateCompleted = 4 | 转码完成 | |
kNIMDocTranscodingStateFailed = 5 | 转码失败 |
返回值说明
无返回值。
示例
C++
static void OnGetDocInfosCallback(int32_t code, int32_t count, const std::list<nim::DocTransInfo>& doc_infos) { if (code == 200) { //成功 } } void foo() { nim::DocTrans::GetInfoList(doc_id, 30, "", &DocInfosCallback); }
C#
private void OnGetTransList(int code, DocTransInfoList list) { _outputTxt.ShowInfo(list.Dump()); } private void button2_Click(object sender, EventArgs e) { NIM.DocTransition.DocTransApi.GetTransitionInfoList(transIDtxtbox.Text, 30,OnGetTransList); }
C
int32_t ParseDocTransInfos( const std::string& json, std::list<DocTransInfo>& info_list ) { int count = 0; Json::Value values; Json::Reader reader; if (reader.parse(json, values) && values.isObject()) { count = values[kNIMDocTransCount].asInt(); Json::Value infos = values[kNIMDocTransInfos]; if (infos.isArray() /*&& infos.size() == count*/) { auto size = infos.size(); Json::Value value; for (int i = 0; i < (int)size; i++) { value = infos[i]; DocTransInfo info; info.id_ = value[kNIMDocTransId].asString(); info.name_ = value[kNIMDocTransName].asString(); info.source_type_ = (NIMDocTranscodingFileType)value[kNIMDocTransSourceType].asInt(); info.size_ = value[kNIMDocTransSize].asInt64(); info.pic_type_ = (NIMDocTranscodingImageType)value[kNIMDocTransPicType].asInt(); info.state_ = (NIMDocTranscodingState)value[kNIMDocTransState].asInt(); info.url_prefix_ = value[kNIMDocTransUrlPrefix].asString(); info.page_num_ = value[kNIMDocTransPageNum].asInt(); info.ext_ = value[kNIMDocTransExt].asString(); if (value.isMember(kNIMDocTransFilePath)) info.upload_file_path = value[kNIMDocTransFilePath].asString(); if (value.isMember(kNIMDocTransUploadStatus)) info.continue_upload_state_ = (NIMDocContinueUploadState)value[kNIMDocTransUploadStatus].asInt(); if (value.isMember(kNIMDocTransPicInfo)) { auto size = value[kNIMDocTransPicInfo].size(); for (int i = 0; i < (int)size; i++) { PictureInfo pic_info; pic_info.quality_ = (NIMDocTranscodingQuality)value[kNIMDocTransPicInfo][i][kNIMDocTransQuality].asInt(); pic_info.width_ = value[kNIMDocTransPicInfo][i][kNIMDocTransWidth].asInt(); pic_info.height_ = value[kNIMDocTransPicInfo][i][kNIMDocTransHeight].asInt(); pic_info.size_ = value[kNIMDocTransPicInfo][i][kNIMDocTransSize].asInt64(); info.pic_info_.push_back(pic_info); } } info_list.push_back(info); } } } return count; } static void CallbackNotify(int32_t code, const char *json_extension, const void *user_data) { std::string json; json.append(json_extension); std::list<DocTransInfo> infos; int count = ParseDocTransInfos(json, infos); } 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(id.c_str(), limit, "", &CallbackNotify, NULL); }
查询文档转码信息
API介绍
查询文档信息接口。通过此接口可以得到文档的状态,已经转码成功的文档,可以在信息中得到详细信息,并通过拼接接口得到某一页的链接地址。
API原型
C++
static void GetInfo( const std::string& id, const std::string& json_extension, const DocInfoCallback& cb )
File:nim_cpp_doc_trans.h
Namespace:NIM
Class:DocTrans
C#
public static void GetTransitionInfo(string id, DocTransDelegate cb)
Namespace:NIM
Class:DocTransApi
C
void nim_doctrans_get_info(const char *id, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data)
File:nim_doc_trans.h
参数说明
- C++
参数 | 类型 | 说明 |
---|---|---|
id | string | 查询的docId |
limit | int | 查询的文档的最大数目,有最大值限制,目前为30 |
json_extension | string | 无效扩展字段 |
cb | function | 回调函数 |
- C#
参数 | 类型 | 说明 |
---|---|---|
id | string | 查询的docId |
cb | function | 回调函数 |
- C
参数 | 类型 | 说明 |
---|---|---|
id | string | 查询的docId |
limit | int | 查询的文档的最大数目,有最大值限制,目前为30 |
cb | function | 回调函数 |
json_extension | string | 无效扩展字段 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
返回值说明
无返回值。
示例
C++
static void OnGetDocInfoCallback(int32_t code, const DocTransInfo& doc_info) { if (code == 200) { //成功 } } void foo() { nim::DocTrans::GetInfoList(doc_id, "", &OnGetDocInfoCallback); }
C#
private void DocTransRes(int code, DocTransInfo info) { if (code == 200) { //查询成功 } } private void button2_Click(object sender, EventArgs e) { NIM.DocTransition.DocTransApi.GetTransitionInfo(transIDtxtbox.Text, DocTransRes); }
C
bool ParseDocTransInfo( const std::string& json, DocTransInfo& info ) { Json::Value value; Json::Reader reader; if (reader.parse(json, value) && value.isObject()) { info.id_ = value[kNIMDocTransId].asString(); info.name_ = value[kNIMDocTransName].asString(); info.source_type_ = (NIMDocTranscodingFileType)value[kNIMDocTransSourceType].asInt(); info.size_ = value[kNIMDocTransSize].asInt64(); info.pic_type_ = (NIMDocTranscodingImageType)value[kNIMDocTransPicType].asInt(); info.state_ = (NIMDocTranscodingState)value[kNIMDocTransState].asInt(); info.url_prefix_ = value[kNIMDocTransUrlPrefix].asString(); info.page_num_ = value[kNIMDocTransPageNum].asInt(); info.ext_ = value[kNIMDocTransExt].asString(); if (value.isMember(kNIMDocTransFilePath)) info.upload_file_path = value[kNIMDocTransFilePath].asString(); if (value.isMember(kNIMDocTransUploadStatus)) info.continue_upload_state_ = (NIMDocContinueUploadState)value[kNIMDocTransUploadStatus].asInt(); if (value.isMember(kNIMDocTransPicInfo)) { auto size = value[kNIMDocTransPicInfo].size(); for (int i = 0; i < (int)size; i++) { PictureInfo pic_info; pic_info.quality_ = (NIMDocTranscodingQuality)value[kNIMDocTransPicInfo][i][kNIMDocTransQuality].asInt(); pic_info.width_ = value[kNIMDocTransPicInfo][i][kNIMDocTransWidth].asInt(); pic_info.height_ = value[kNIMDocTransPicInfo][i][kNIMDocTransHeight].asInt(); pic_info.size_ = value[kNIMDocTransPicInfo][i][kNIMDocTransSize].asInt64(); info.pic_info_.push_back(pic_info); } } return true; } return false; } static void CallbackNotify(int32_t code, const char *json_extension, const void *user_data) { if (code == 200) { //查询成功 std::string json; json.append(json_extension); DocTransInfo info; ParseDocTransInfo(json, info); } } 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.c_str(), "", &CallbackNotify, NULL); }
拼接文档源的下载地址
API介绍
获取文档源文件链接地址接口。通过查询得到的文档信息,可以用此接口拼接得到文档源的链接地址。
API原型
C++
static std::string GetSourceFileUrl(const std::string& url_prefix, NIMDocTranscodingFileType file_type)
File:nim_cpp_doc_trans.h
Namespace:NIM
Class:DocTrans
C#
public static string GetSourceFileUrl(string urlPrefix, NIMDocTranscodingFileType fileType)
Namespace:NIM
Class:DocTransApi
C
char *nim_doctrans_get_source_file_url(const char *url_prefix, NIMDocTranscodingFileType file_type)
File:nim_doc_trans.h
参数说明
参数 | 类型 | 说明 |
---|---|---|
url_prefix | string | 文档信息中的url前缀 |
file_type | int | 文档类型NIMDocTranscodingFileType |
返回值说明
返回文档源的下载地址,C接口需要上层调用nim_global.h提供的内存释放接口释放。
示例
C++
void foo(nim::DocTransInfo& doc_info) { std::string url = nim::DocTrans::GetPageUrl(doc_info.url_prefix_, nim::kNIMDocTranscodingFileTypePPT); }
C#
private void button2_Click(object sender, EventArgs e) { NIM.DocTransition.DocTransApi.GetSourceFileUrl(url_prefix,NIM.DocTransition.NIMDocTranscodingFileType.kNIMDocTranscodingFileTypePPT); }
C
typedef void (*nim_global_free_buf)(void *data); typedef char* (*nim_doctrans_get_source_file_url)(const char *url_prefix, NIMDocTranscodingFileType file_type); void foo(const std::string& url_prefix, NIMDocTranscodingFileType file_type) { nim_doctrans_get_source_file_url func = (nim_doctrans_get_source_file_url) GetProcAddress(hInst, "nim_doctrans_get_source_file_url"); const char *url = func(url_prefix.c_str(), file_type); .... nim_global_free_buf free_func = (nim_global_free_buf) GetProcAddress(hInst, "nim_global_free_buf"); free_func((void *)url); }
拼接文档图片的下载地址
API介绍
获取文档页链接地址接口。通过查询得到的文档信息,可以用此接口拼接得到文档页的链接地址。
API原型
C++
static std::string GetPageUrl(const std::string& url_prefix, NIMDocTranscodingImageType img_type, NIMDocTranscodingQuality quality, int page_num)
File:nim_cpp_doc_trans.h
Namespace:NIM
Class:DocTrans
C#
public static string GetPageUrl(string urlPrefix, NIMDocTranscodingImageType imgType, NIMDocTranscodingQuality quality, int pageNum)
Namespace:NIM
Class:DocTransApi
C
char *nim_doctrans_get_page_url(const char *url_prefix, NIMDocTranscodingImageType img_type, NIMDocTranscodingQuality quality, int page_num)
File:nim_doc_trans.h
参数说明
- C#
参数 | 类型 | 说明 |
---|---|---|
url_prefix | string | 文档信息中的url前缀 |
imgType | enum | 图片类型NIMDocTranscodingImageType |
quality | int | 清晰度等级NIMDocTranscodingQuality |
pageNum | int | 文档类型页码 |
- C++/C
参数 | 类型 | 说明 |
---|---|---|
url_prefix | string | 文档信息中的url前缀 |
img_type | int | 图片类型NIMDocTranscodingImageType |
quality | int | 清晰度等级NIMDocTranscodingQuality |
page_num | int | 文档类型页码 |
返回值说明
返回文档页的下载地址,C接口需要上层调用nim_global.h提供的内存释放接口释放。
示例
C++
void foo(nim::DocTransInfo& doc_info) { std::string url = nim::DocTrans::GetPageUrl(doc_info.url_prefix_, doc_info.pic_type_, nim::kNIMDocTranscodingQualityHigh, page_num); }
C#
private void button2_Click(object sender, EventArgs e) { NIM.DocTransition.DocTransApi.GetPageUrl(url_prefix, NIM.DocTransition.NIMDocTranscodingImageType.kNIMDocTranscodingImageTypeJPG, NIM.DocTransition.NIMDocTranscodingQuality.kNIMDocTranscodingQualityHigh, 1); }
C
typedef void (*nim_global_free_buf)(void *data); typedef char* (*nim_doctrans_get_page_url)(const char *url_prefix, NIMDocTranscodingImageType img_type, NIMDocTranscodingQuality quality, int32_t page_num); void foo(const std::string& url_prefix, NIMDocTranscodingImageType img_type, NIMDocTranscodingQuality quality, int32_t page_num) { nim_doctrans_get_page_url func = (nim_doctrans_get_page_url) GetProcAddress(hInst, "nim_doctrans_get_page_url"); const char *url = func(url_prefix.c_str(), img_type, quality, page_num); .... nim_global_free_buf free_func = (nim_global_free_buf) GetProcAddress(hInst, "nim_global_free_buf"); free_func((void *)url); }
删除云端的转码文档
API介绍
删除云端转码文档接口。
API原型
C++
static void DeleteInfo(const std::string& id, const std::string& json_extension, const DocInfoCallback& cb)
File:nim_cpp_doc_trans.h
Namespace:NIM
Class:DocTrans
C#
public static void DeleteTransition(string id, DocTransDelegate cb)
Namespace:NIM
Class:DocTransApi
C
void nim_doctrans_del_info(const char *id, const char *json_extension, nim_doctrans_opt_cb_func cb, const void *user_data)
File:nim_doc_trans.h
参数说明
- C++
参数 | 类型 | 说明 |
---|---|---|
id | string | 文档id |
json_extension | string | 无效扩展 |
cb | function | 回调函数 |
- C#
参数 | 类型 | 说明 |
---|---|---|
id | string | 文档id |
cb | function | 回调函数 |
- C
参数 | 类型 | 说明 |
---|---|---|
id | string | 文档id |
json_extension | string | 无效扩展 |
cb | function | 回调函数 |
user_data | void* | 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理 |
返回值说明
无返回值。
示例
C++
static void DelNotifyCallback(int32_t code, const nim::DocTransInfo& doc_info) { //doc_info无效 if (code == 200) { //删除成功 } } void foo() { nim::DocTrans::DeleteInfo(file_id, DelNotifyCallback); }
C#
private void OnTransDocCompleted(int code, DocTransInfo info) { //info无效 if (code == 200) { //删除成功 } } void RegisterRtsCallback() { NIM.DocTransition.DocTransApi.DeleteTransition(file_id, OnTransDocCompleted); }
C
static void CallbackNotify(int32_t code, const char *json_extension, const void *user_data) { if (code == 200) { //删除成功 } } 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(const std::string& id) { nim_doctrans_del_info func = (nim_doctrans_del_info) GetProcAddress(hInst, "nim_doctrans_del_info"); func(id.c_str(), "", &CallbackNotify, NULL); }