本教程展示了如何在NodeJS应用程序中使用LEADTOOLS云服务合并文档。
概述 | |
---|---|
总结 | 本教程介绍如何制作合并 请求并在NodeJS应用程序中使用LEADTOOLS云服务处理结果。 |
完成时间 | 30分钟 |
项目 | 下载教程项目(125kb) |
平台 | LEADTOOLS云服务API |
IDE | Visual Studio 2019 |
语言 | NodeJS |
开发许可 | 下载LEADTOOLS |
用另一种语言试试 |
|
请务必查看以下网站,了解有关LEADTOOLS云服务API的信息。
创建帐户使用LEADTOOLS托管云服务来获得两者应用程序ID和密码字符串。
LEADTOOLS服务计划提供:
服务计划 | 描述 |
---|---|
免费试用 | 免费评估 |
页面包 | 已付费页包 |
订阅 | 预付每月已处理页数 |
要进一步探索这些产品,请参阅LEADTOOLS托管云服务页面。
获取所需的“应用ID”和“应用密码”请参见使用LEADTOOLS托管的云服务创建帐户和应用程序.
创建了项目并添加了包之后,就可以开始编码了。
在解决方案资源管理器,打开server.js
.在顶部添加以下变量。
//展示如何在LEADTOOLS Cloud Services中使用Merge API的简单脚本。
常量Axios =要求“axios”);
//如果将文件作为多部分内容上传,我们将需要安装文件系统库。
//const fs = require('fs');
常量FormatsEnum = {
png: 1、
jpeg: 2
tiff: 3,
pdf: 4
pdfa: 5
pdfImage: 6,
pdfImageOverText: 7,
pdfaImageOverText: 8
多克斯:9,
docxFramed: 10,
rtf: 11,
rtfFramed: 12,
txt: 13,
txtFramed: 14,
};
常量servicesUrl =“https://azure.leadtools.com/api/”;
常量tiffUrl =“http://demo.leadtools.com/images/cloud_samples/ocr1气管无名动脉瘘管的- 4.”;
常量pdfUrl =“https://demo.leadtools.com/images/pdf/leadtools.pdf”;
让firstFileId =”“;
让secondFileId =”“;
常量outputFormat = FormatsEnum.pdf;
添加呼叫还是(tiffUrl firstFileUploadCallback);
,匹配函数还是(url,回调)
和firstFileUploadCallback(error, response, body)
;另外,创建函数uploadSecondFile ()
和secondFileUploadCallback(error, response, body)
.这些函数发送还是
请求LEADTOOLS Cloud Services API,如果成功,每个文件将被发送到服务器,并返回一个唯一标识符(GUID)并存储以供以后使用。
还是(tiffUrl firstFileUploadCallback);
函数uploadFile(url, callback) {
常量uploadUrl = ' ${servicesUrl}uploadFile?forMerge =真正的&fileurl = $ {url} ';
axios
.post(uploadUrl, {}, getRequestOptions(uploadUrl))
.then((res) => {
回调(res。错误,res, res.data);
})
.抓((err) => {
console.error(错);
});
//如果上传文件为多部分内容:
/*var uploadUrl = servicesUrl + "uploadFile?forMerge=true";
const form = new FormData();
的形式。追加(“文件”,fs.createReadStream('路径\ \ inputFile '));
axios.post(uploadUrl, form, getRequestOptions(uploadUrl)).then((res) => {
回调(res。错误,res, res.data);
})。Catch ((err) => {
console.error(错);
}); * /
}
函数firstFileUploadCallback(错误,响应,正文){
如果(!错误&&响应。状态=== 200){
firstFileId = body;
console.log ("第一个文件ID: "+ firstFileId);
checkVerification (firstFileId uploadSecondFile);
}
}
函数uploadSecondFile () {
还是(pdfUrl secondFileUploadCallback);
}
函数secondFileUploadCallback(error, response, body) {
如果(!错误&&响应。状态=== 200){
secondFileId = body;
console.log ("第二个文件ID: "+ secondFileId);
checkVerification (secondFileId mergeFile);
}
}
对于每个文件上传,将执行验证检查,以确保文件已提交到服务器。创建一个async函数calllback checkVerification (id)
它利用来自上传请求的文件id。
异步函数checkVerification(id, callback) {
常量queryUrl = servicesUrl +“查询?id = "+身份证;
等待axios
.post(queryUrl, {}, getRequestOptions(queryUrl))
.then((res) => {
常量Results = res.data;
如果(res。错误&&结果[“FileStatus”== 123) {
console.log ("验证结束,返回代码:"+ res.status);
如果(结果“FileStatus”] == 122) {
回调();
}其他的{
console.log (
"文件验证失败,文件状态:"+
结果(“FileStatus”]
);
}
}其他的{
//文件尚未处理完毕。
返回新Promise((resolve) => {
setTimeout(() => {
//在重试前先休眠5秒
解决(checkVerification (id、回调));//再次调用该方法。
}, 5000);
});
}
})
.抓((err) => {
console.error(错);
});
}
一旦这两个文件的验证都完成并有效,a合并
将需要发送请求以将文件合并为一个。创建一个名为mergeFile ()
它将提交合并请求和先前收集的文件id。
函数mergeFile () {
常量mergeUrl = ' ${servicesUrl}转换/合并?format=${outputFormat} ';
常量options = getRequestOptions(mergeUrl);
常量json = json .stringify([
{
珍宝:1、
lastPage: 1、
文件标识:firstFileId,
},
{
页数:[5,1,2,4,3],
文件标识:secondFileId,
},
]);
axios.post(mergeUrl, json, options).then((res) => {
console.log (“合并文件……”);
如果(res。错误&& res.status === 200) {
console.log ("合并命令成功");
queryServices (firstFileId);
}其他的{
console.log ("合并HTTP代码失败:"+ res.status);
console.log (res.data);
}
});
}
接下来,创建一个名为queryServices (guid)
提供的GUID合并
请求。如果成功,响应体将以JSON格式包含所有请求数据。
异步函数queryServices (guid) {
//查询请求状态。如果请求尚未完成,则此函数将递归地调用自己,直到文件完成。
常量queryUrl = servicesUrl +“查询?id = "+ guid;
等待axios
.post(queryUrl, {}, getRequestOptions(queryUrl))
.then((res) => {
常量Results = res.data;
如果(
res。错误& &
结果(“FileStatus”== 100 &&
结果(“FileStatus”] !== 123
) {
console.log ("文件处理完毕,返回代码:"+ res.status);
console.log(结果“FileStatus”]);
如果(结果“FileStatus”== 200) {
返回;
}
console.log (“结果:\ n”);
parseJson(结果“RequestData”]);
}其他的{
//文件尚未处理完毕。
返回新Promise((resolve) => {
setTimeout(() => {
//在重试前先休眠5秒
解决(queryServices (guid));//再次调用该方法。
}, 5000);
});
}
})
.抓((err) => {
console.error(错);
});
}
然后,创建函数parseJson (jsonObject)
来处理返回的JSON数据。
函数parseJson (jsonObject) {
//解码由LEADTOOLS CloudServices返回的JSON对象。
为(设I = 0;i < jsonObject.length;我+ +){
let currentRequest = jsonObject[i];
console.log (“服务类型:”+ currentRequest [“ServiceType”]);
如果(currentRequest [“ServiceType”) = = =“转换”) {
console.log (url:“);
currentRequest [“url”.forEach((url) => {
console.log (url);
});
}
}
}
最后,创建函数getRequestOptions (url)
提供标头和授权axios.post
连接,以便通过请求GUID和JSON数据。上面写着替换为应用程序ID
和替换为应用程序密码
一定要把你的申请ID及密码相应的行动。
函数getRequestOptions (url) {
常量appId =“以申请编号代替”;
常量密码=“以应用程式密码取代”;
常量token = Buffer.from(' ${appId}:${password} ',“utf8 ") .toString (“base64”);
//生成并返回HTTP请求选项。
常量requestOptions = {
url: url、
数据:{},
//如果上传的文件是多部分内容,删除content - length头。
标题:{
“内容长度”: 0,
授权:'基本${token} ',
},
};
返回requestOptions;
}
按下运行项目Ctrl + F5,或选择Debug ->启动不调试.
如果正确地执行了这些步骤,控制台将出现,应用程序将显示从返回的JSON数据中解析的检查信息。
本教程展示了如何通过LEADTOOLS Cloud Services API合并文件。