合并——NodeJS

本教程展示了如何在NodeJS应用程序中使用LEADTOOLS云服务合并文档。

概述
总结 本教程将介绍如何制作合并请求并在NodeJS应用程序中使用LEADTOOLS云服务处理结果。
完成时间 30分钟
项目 下载教程项目(125kb)
平台 LEADTOOLS云服务API
IDE Visual Studio 2019
语言 NodeJS
开发许可 下载LEADTOOLS
用另一种语言试试

所需的知识

请务必查看以下站点以获取有关LEADTOOLS云服务API的信息。

服务计划

LEADTOOLS服务计划提供:

服务计划 描述
免费试用 免费评估
页面包 预付页面包
订阅 预付月处理页面

要进一步了解这些产品,请参阅LEADTOOLS托管云服务页面。

申请ID和申请密码请参见使用LEADTOOLS托管云服务创建帐户和应用程序

添加合并代码

创建项目并添加包之后,就可以开始编码了。

解决方案资源管理器,打开server.js.在顶部添加以下变量。

//演示如何在LEADTOOLS云服务中使用合并API的简单脚本。常量axios =要求(“axios”);//如果上传一个文件作为多部分内容,我们将需要安装文件系统库。//const fs = require('fs');常量FormatsEnum = {png: 1、jpeg: 2tiff: 3,pdf: 4pdfa: 5pdfImage: 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(误差、响应体);另外,创建函数uploadSecondFile ()而且secondFileUploadCallback(误差、响应体).这些函数发送还是请求到LEADTOOLS Cloud Services API,如果成功,每个文件将被发送到服务器,并返回一个惟一标识符(GUID)并存储起来供以后使用。

还是(tiffUrl firstFileUploadCallback);函数还是(回调url) {常量uploadUrl = " $ {servicesUrl}还是?forMerge =真正的&fileurl = $ {url} ';axios. post ({}, uploadUrl getRequestOptions (uploadUrl))不要犹豫((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 =身体;console.log ("第一个文件ID: "+ firstFileId);checkVerification (firstFileId uploadSecondFile);函数uploadSecondFile () {还是(pdfUrl secondFileUploadCallback);函数secondFileUploadCallback(错误,响应,体){如果(!& &错误响应。状态=== 200){secondFileId =身体;console.log ("第二个文件ID: "+ secondFileId);checkVerification (secondFileId mergeFile);

对于每个文件上传,将执行一个验证检查,以确保文件已提交到服务器。创建一个async函数calllback checkVerification (id)它利用来自上传请求的文件id。

异步函数checkVerification (id、回调){常量queryUrl = servicesUrl +“查询?id = "+身份证;等待axios. post ({}, queryUrl getRequestOptions (queryUrl))不要犹豫((res) = > {常量结果= res.data;如果(res。错误& &结果(“FileStatus”== 123) {console.log ("验证已完成,返回代码:"+ res.status);如果(结果“FileStatus”== 122) {回调();其他的console.log ("文件状态验证失败:"+结果(“FileStatus”);其他的//文件尚未完成处理。返回承诺((解决)= > {setTimeout (() = > {//等待5秒再尝试解决(checkVerification (id、回调));//再次调用该方法。}, 5000);});})((err) = > {console.error(错);});

一旦两个文件的验证完成且有效,a合并将需要发送请求将文件合并为一个。创建一个函数mergeFile ()它将使用之前收集的fileid提交合并请求。

函数mergeFile () {常量mergeUrl = " $ {servicesUrl}转换/合并?格式= $ {outputFormat} ';常量选择= 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))不要犹豫((res) = > {常量结果= res.data;如果res。错误& &结果(“FileStatus”== 100 && .结果(“FileStatus”] ! = = 123){console.log ("文件已完成处理,返回代码:"+ res.status);console.log(结果“FileStatus”]);如果(结果“FileStatus”== 200) {返回console.log (“结果:\ n”);parseJson(结果“RequestData”]);其他的//文件尚未完成处理。返回承诺((解决)= > {setTimeout (() = > {//等待5秒再尝试解决(queryServices (guid));//再次调用该方法。}, 5000);});})((err) = > {console.error(错);});

然后,创建函数parseJson (jsonObject)处理返回的JSON数据。

函数parseJson (jsonObject) {//解码LEADTOOLS CloudServices返回的JSON对象的函数。(设I = 0;我< 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 =“以申请编号取代”常量密码=“以申请密码代替”常量令牌= Buffer.from(“$ {appId}: ${密码}',“utf8 ") .toString (“base64”);//生成并返回HTTP请求选项。常量requestOptions = {url: url、数据:{},//如果上传一个文件作为多部分内容,删除content - length头文件。标题:{“内容长度”: 0,授权:“基本${牌}”,},};返回requestOptions;

运行该项目

通过按运行项目Ctrl + F5,或选择调试->启动不调试

如果正确地执行了步骤,控制台将出现,应用程序将显示从返回的JSON数据中解析的检查信息。

合并后的文件信息

总结

本教程展示了如何通过LEADTOOLS Cloud Services API合并文件。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2022领先的技术公司。保留所有权利。