合并文档- Java

本教程展示如何在Java应用程序中使用LEADTOOLS云服务将文档合并为单个文件。

概述
总结 本教程介绍如何制作合并请求并使用Java应用程序中的LEADTOOLS云服务处理结果。
完成时间 30分钟
项目 下载教程项目(7kb)
平台 LEADTOOLS云服务API
IDE IntelliJ
语言 Java
开发许可 下载LEADTOOLS

所需的知识

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

服务计划

LEADTOOLS服务计划提供:

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

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

如需获取应用ID和应用密码,请参见使用LEADTOOLS托管云服务创建帐户和应用程序

创建项目并添加Maven依赖项

在IDE中,使用Maven创建一个新的Java项目,并将以下所需的Maven依赖项添加到pom.xml文件:

<依赖><groupId>org.json</ groupId><artifactId>json</ artifactId><版本>20210307</版本></依赖>

添加合并代码

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

项目文件,打开App.java.添加以下内容进口上面的语句。

Java
进口org.json.JSONArray;进口org.json.JSONObject;进口java.io.File;进口java.io.FileNotFoundException;进口java.net.URI;进口java.net.http.HttpClient;进口java.net.http.HttpRequest;进口java.net.http.HttpRequest.BodyPublisher;进口java.net.http.HttpResponse;进口java.nio.charset.StandardCharsets;进口java.util.Base64;进口java.util.concurrent.CompletableFuture;进口java.util.concurrent.ExecutionException;进口java.util.concurrent.TimeUnit;进口java.util.concurrent.TimeoutException;

添加名为FormatsEnum还有一个名为合并().的合并()方法使用Merge API上传2个文件,验证上传成功,并合并它们。如果成功,将返回一个唯一标识符(GUID),然后使用这个GUID进行查询。

将下面的代码添加到FormatsEnum枚举。

Java
私人枚举FormatsEnumPng (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);私人最后int价值;FormatsEnum (int值){.value =值;公共intgetValue () {返回价值;

将下面的代码添加到合并()方法。

Java
私人静态无效合并(){HttpClient客户机= HttpClient. newhttpclient ();//如果使用URL到文件字符串tiffUrl =“https://demo.leadtools.com/images/cloud_samples/ocr1气管无名动脉瘘管的- 4.”字符串uploadUrl = String.format(“还是?fileurl = % s&forMerge = true ", tiffUrl);结果结果= postAsync(uploadUrl,、客户端);//如果上传文件为多部分内容://文件uploadFile = new文件("path/to/ File ");// String uploadUrl = "UploadFile";// Results Results = postAsync(uploadUrl, uploadFile, client);如果(results.getStatusCode() != 200) {System.out.println ("请求失败,响应如下"+ results.getStatusCode ());返回字符串firstFileId = results.getData();System.out.println (服务返回的第一个文件ID:+ firstFileId);如果(!checkFileForVerification(firstFileId,客户端)){返回字符串pdfUrl =“https://demo.leadtools.com/images/pdf/leadtools.pdf”uploadUrl = String.format(“还是?fileurl = % s&forMerge = true ", pdfUrl);结果= postAsync(uploadUrl,、客户端);如果(results.getStatusCode() != 200) {System.out.println ("请求失败,响应如下"+ results.getStatusCode ());返回字符串secondFileId = results.getData();System.out.println (服务返回的第二个文件ID:+ secondFileId);如果(!checkFileForVerification(secondFileId,客户端)){返回如果(!mergeFiles(客户端,firstFileId, secondFileId) {System.out.println (文件合并失败);返回查询(firstFileId、客户);System.out.println (“完成”);

创建两个名为(HttpClient客户端,字符串firstFileId,字符串secondFileId)而且checkFileForVerification(字符串id, HttpClient客户机).方法中调用这两个方法合并()方法,如上所示。

将下面的代码添加到mergeFiles ()方法,指示云服务API使用给定的id将两个上传的文件合并为一个文件。

Java
私人静态布尔mergeFiles(HttpClient客户端,字符串firstFileId,字符串secondFileId) {ArrayList mergeList =ArrayList < > ();MergeFirstLast newFirstLast =MergeFirstLast ();newFirstLast.setFileID (firstFileId);newFirstLast.setFirstPage (1);newFirstLast.setLastPage (1);mergeList.add (newFirstLast);MergePageArray newPageArray =MergePageArray ();newPageArray.setFileID (secondFileId);newPageArray.setPages (int[] {5 1 2 4 2});mergeList.add (newPageArray);//合并文件的最终输出格式intoutputFormat = FormatsEnum.Pdf.getValue();字符串mergeUrl = String.format(“转换/合并?= % s”格式, outputFormat);JSONArray mergeJSON =JSONArray (mergeList.toString ());结果result = postAsync(mergeUrl, HttpRequest.BodyPublishers.ofString(mergeJSON.toString(), StandardCharsets.UTF_8),客户端);返回result.getStatusCode() == 200;

将下面的代码添加到checkFileForVerification ()方法确认传入的文件已成功上传。

Java
私人静态布尔checkFileForVerification(字符串id, HttpClient客户端){字符串queryUrl = String.format(“查询?id = % s "、身份证);结果结果;JSONObject returnedData;intfileStatus = 0;试一试结果= postAsync(queryUrl,、客户端);returnedData =JSONObject (results.getData ());fileStatus =返回数据。getint (“FileStatus”);thread . sleep (500);(InterruptedException e) {e.printStackTrace ();(fileStatus = 0 || fileStatus == 123);如果(fileStatus != 122) {System.out.println (“文件”+ id +"文件状态验证失败:"+ fileStatus);返回返回真正的

接下来,创建一个名为查询HttpClient客户端控件提供的GUID合并()方法。如果成功,响应体将包含JSON格式的所有请求数据。一定要打电话给查询()方法中的合并()方法,如上所示。将下面的代码添加到查询()方法。

Java
私人静态无效查询(HttpClient客户端){字符串queryUrl = String.format(“查询?id = % s "、身份证);结果结果;JSONObject返回数据=JSONObject ();intfileStatus = 0;试一试结果= postAsync(queryUrl,、客户端);returnedData =JSONObject (results.getData ());fileStatus =返回数据。getint (“FileStatus”);如果(fileStatus != 200) Thread.sleep(5000);(InterruptedException e) {/ / e.printStackTrace ();(|| fileStatus == 100 || fileStatus == 123);System.out.println ("文件已完成处理,返回代码:"+ fileStatus);如果(fileStatus != 200) {返回parseJson (returnedData.get (“RequestData”) .toString ());

然后,创建两个名为parseJson (json字符串)而且postAsync(字符串路径,文件文件,HttpClient客户端),它们都将在查询()方法,如上所示。

将下面的代码添加到parseJson ()方法来处理返回的JSON数据。

Java
私人静态无效parseJson(String json) {JSONArray requestArray =JSONArray (json);(对象requestObject: requestArray) {如果(requestObject运算符JSONObject) {JSONObject requestReturn = (JSONObject) requestObject;System.out.println (“服务类型:”+ requestReturn.getString (“ServiceType”));System.out.println (返回的数据:“);JSONArray urlArray =JSONArray (requestReturn.get (“url”) .toString ());(对象obj: urlArray) {System.out.println (obj.toString ());

将下面的代码添加到postAsync ()方法来创建一个客户端连接来请求GUID和JSON数据。上面写着替换为应用程序ID而且替换为应用程序密码请务必输入相应的应用程序ID和密码。有关如何获取应用程序ID和密码的信息,请参阅使用LEADTOOLS托管云服务创建帐户和应用程序教程。

Java
私人静态postAsync(字符串路径,对象主体,HttpClient客户端){字符串AppId =“替换为应用程序ID”密码=“替换为应用程序密码”字符串authHeader =“基本”+字符串(Base64.getEncoder()。编码(AppId +":"+密码).getBytes (StandardCharsets.UTF_8)));字符串hostedServicesUrl =“https://azure.leadtools.com/api/”BodyPublisher thisBody = httprequest .BodyPublisher . ofstring (“零”);如果(身体运算符BodyPublisher) {thisBody = (BodyPublisher) body;其他的如果(身体运算符文件){试一试thisBody = HttpRequest.BodyPublishers.ofFile(((File) body).toPath());(FileNotFoundException e) {/ / e.printStackTrace ();HttpRequest request = HttpRequest. newbuilder (). post (thisBody).uri (URI。创建(hostedServicesUrl +路径).header (“接受”“application / json”.header (“授权”authHeader).header (“内容类型”“文本/普通”.build ();CompletableFuture> result =客户端。(请求,HttpResponse.BodyHandlers.ofString是以());结果结果=结果();results.setData ("");results.setStatusCode (0);试一试results.setData (result.thenApply (HttpResponse::身体)。(5, TimeUnit.SECONDS));results.setStatusCode (result.thenApply (HttpResponse:: statusCode)。(5, TimeUnit.SECONDS));(InterruptedException | ExecutionException | TimeoutException e) {e.printStackTrace ();返回结果;

类的结果,应用程序将需要一个助手类来存储帖子请求。创建一个名为结果并将下面的代码添加到其中。

Java
私人静态结果{私人字符串数据;私人intstatusCode;公共字符串getData() {返回数据;公共无效setData(字符串数据){.data =数据;公共intgetStatusCode () {返回statusCode;公共无效setStatusCode (intstatusCode) {.statusCode = statusCode;

另外,创建模型类,MergeArgumentMergeFirstLast:合并参数,MergePageArray: MergeArgument;这些有助于mergeFiles ()方法。将下面的代码分别添加到这些类中。

Java
私人静态MergeArgument {私人字符串文件标识;公共字符串getFileID() {返回文件标识;公共无效setFileID(字符串fileId) {.fileId = fileId;公共字符串toString() {返回文件标识\“\:\ "+ fileId +“\”}”私人静态MergeFirstLast扩展MergeArgument {私人int珍宝;私人intlastPage;公共intgetFirstPage () {返回珍宝;公共intgetLastPage () {返回lastPage;公共无效setFirstPage (int珍宝){.firstPage = firstPage;公共无效setLastPage (intlastPage) {.lastPage = lastPage;@Override公共字符串toString() {返回“{\“珍宝\”:“+ firstPage +”,\“lastPage \”:“+ lastPage +","+超级.toString ();私人静态MergePageArray扩展MergeArgument {私人int[]页;公共int[] getPages() {返回页;公共无效setPages (int[]页){.pages =页面;@Override公共字符串toString() {返回“{\”页面\”:“+ Arrays.toString(pages","+超级.toString ();

运行项目

为了测试运行此代码,请务必添加合并();静空主部分。

按下运行项目Alt + F5,或选择执行命令->调试App

如果正确地执行了这些步骤,就会出现控制台,应用程序将从返回的JSON数据显示到合并文件的链接。

合并文件信息

总结

本教程展示了如何在Java应用程序中通过LEADTOOLS云服务合并文件。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2022领德科技有限公司版权所有。