本教程展示了如何转换和拆分条形码从文件使用LEADTOOLS云服务在Java应用程序中。
概述 | |
---|---|
总结 | 本教程介绍了如何制作ConvertBarcodeSplit 请求和处理结果在Java应用程序中使用LEADTOOLS云服务。 |
完成时间 | 30分钟 |
项目 | 下载教程项目(5 KB) |
平台 | LEADTOOLS云服务API |
IDE | IntelliJ |
语言 | Java |
开发许可 | 下载LEADTOOLS |
一定要检查以下网站信息LEADTOOLS云服务API。
LEADTOOLS服务计划发行:
服务计划 | 描述 |
---|---|
免费试用 | 免费评估 |
页面包 | 预付页面包 |
订阅 | 每月预付处理页面 |
进一步探索提供参考LEADTOOLS托管的云服务页面。
获得必要的应用程序ID和密码,请参考创建一个帐户与LEADTOOLS承载云服务和应用程序。
在IDE中创建一个新的Java项目,Maven,并添加以下要求Maven的依赖pom.xml
文件:
<依赖>
<groupId>org.json</ groupId>
<artifactId>json</ artifactId>
<版本>20210307</版本>
</依赖>
项目创建和包添加,可以开始编码。
在项目文件,打开App.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;
添加一个类级别enum命名FormatsEnum
和方法命名convertBarcodeSplit ()
。的convertBarcodeSplit ()
方法发送一个转换
请求LEADTOOLS云服务API。如果成功将返回一个唯一标识符(GUID),然后使用该GUID将一个查询。
将下面的代码添加到FormatsEnum
枚举。
私人枚举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);
私人最后int价值;
FormatsEnum (int值){
这value =价值;
}
公共intgetValue () {
返回价值;
}
}
将下面的代码添加到convertBarcodeSplit ()
方法。
私人静态无效convertBarcodeSplit () {
HttpClient客户= HttpClient.newHttpClient ();
/ /第一页文件中标记进行处理
int珍宝= 1;
/ /发送值将表明服务的所有页面文件应该被处理。
intlastPage = 1;
/ /枚举对应的输出格式文件。这个脚本的用途,我们将气管无名动脉瘘管的皈依。
intfileFormat = FormatsEnum.Tiff.getValue ();
intsplitOptions = 1;
/ /如果使用URL到文件
字符串fileURL =“http://demo.leadtools.com/images/cloud_samples/barcode_split_sample.pdf”;
字符串conversionUrl = String.format (“转换/ ConvertBarcodeSplit ?”珍宝= % s&lastPage = % s&fileurl = % s&format = % s&splitOptions = % s”、珍宝、lastPage fileURL、fileFormat splitOptions);
结果结果= postAsync (conversionUrl,零、客户端);
/ /如果上传一个文件作为多部分内容:
/ /文件,新文件(“路径/ /文件”);
/ /字符串conversionUrl = String.format(“转换/ ConvertBarcodeSplit吗?珍宝= % s&lastPage = % s&format = % s&splitOptions = % s“,”珍宝,lastPage, fileFormat, splitOptions);
/ /结果结果= postAsync (conversionUrl、还是、客户);
如果(results.getStatusCode () = = 200) {
/ /返回的惟一ID服务
System.out.println (“惟一的ID返回的服务:“+ results.getData ());
查询(results.getData(),客户端);
}其他的{
System.out.println (请求失败,以下响应:“+ results.getStatusCode ());
}
}
接下来,创建一个新方法查询(字符串id, HttpClient客户端)
利用提供的GUIDconvertBarcodeSplit ()
方法。如果成功身体将包含所有请求的响应以JSON格式的数据。一定要调用查询()
方法在convertBarcodeSplit ()
方法,如上所示。将下面的代码添加到查询()
方法。
私人静态无效查询(字符串id, HttpClient客户机){
字符串queryUrl = String.format (“查询id = % s ?”、身份证);
结果结果;
JSONObject returnedData =新JSONObject ();
intfileStatus = 0;
做{
试一试{
结果= postAsync (queryUrl,零、客户端);
returnedData =新JSONObject (results.getData ());
fileStatus = returnedData.getInt (“FileStatus”);
如果(fileStatus ! = 200) thread . sleep (5000);
}抓(InterruptedException e) {
/ / e.printStackTrace ();
}
}而(fileStatus = = 0 | | 100年fileStatus = = | | fileStatus = = 123);
System.out.println (“文件处理完返回码:“+ fileStatus);
如果(fileStatus ! = 200) {
返回;
}
parseJson (returnedData.get (“RequestData”).toString ());
}
然后,创建两个新的命名方法parseJson (json字符串)
和postAsync (String路径,文件文件,HttpClient客户端)
,这都将被称为内查询()
方法,如上所示。
将下面的代码添加到parseJson ()
方法来处理返回的JSON数据。
私人静态无效parseJson (String json) {
JSONArray requestArray =新JSONArray (json);
为(对象requestObject: requestArray) {
如果(requestObject运算符JSONObject) {
JSONObject requestReturn = (JSONObject) requestObject;
System.out.println (服务类型:“+ requestReturn.getString (“ServiceType”));
System.out.println (返回的数据:“);
JSONObject data = (JSONObject) requestReturn.get (“数据”);
JSONArray urlArray =新JSONArray (data.get (“url”).toString ());
为(对象obj: urlArray) {
System.out.println (obj.toString ());
}
}
}
}
将下面的代码添加到postAsync ()
方法创建一个客户端连接请求通过GUID和JSON数据。在那里国家替换为应用程序ID
和替换为应用程序密码
一定要把你的应用程序ID和密码。信息如何获得您的应用程序ID和密码,看到创建一个帐户与LEADTOOLS承载云服务和应用程序教程。
私人静态结果postAsync(字符串路径、对象的身体,HttpClient客户机){
字符串AppId =“应用程序ID替换”;
字符串密码=”替换为应用程序密码”;
字符串authHeader =“基本”+新字符串(Base64.getEncoder ()。编码(AppId +”:“+密码).getBytes (StandardCharsets.UTF_8)));
字符串hostedServicesUrl =“https://azure.leadtools.com/api/”;
BodyPublisher thisBody = HttpRequest.BodyPublishers.ofString (“零”);
如果(身体运算符BodyPublisher) {
thisBody = (BodyPublisher)的身体;
}其他的如果(身体运算符文件){
试一试{
thisBody = HttpRequest.BodyPublishers.ofFile(((文件)的身体).toPath ());
}抓(FileNotFoundException e) {
/ / e.printStackTrace ();
}
}
HttpRequest请求= HttpRequest.newBuilder ()
. post (thisBody)
.uri (URI。创建(hostedServicesUrl +路径))
.header (“接受”,“application / json”)
.header (“授权”authHeader)
.header (“内容类型”,“文本/普通”)
.build ();
CompletableFuture < HttpResponse <字符串> > =客户结果。(请求,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 ();
}
返回结果;
}
应用程序需要一个助手类存储的结果帖子
请求。创建一个新类结果
并将下面的代码添加到它。
私人静态类结果{
私人字符串数据;
私人intstatusCode;
公共字符串getData () {
返回数据;
}
公共无效setData(字符串数据){
这. data =数据;
}
公共intgetStatusCode () {
返回statusCode;
}
公共无效setStatusCode (intstatusCode) {
这.statusCode = statusCode;
}
}
为了测试运行这段代码一定要添加convertBarcodeSplit ();
到静态孔隙主要
部分。
按运行项目Alt + F5,或通过选择运行- >调试应用程序。
如果步骤正确,控制台出现应用程序显示的链接转换和分裂条形码TIFF图像从返回的JSON数据。
本教程展示了如何将条形码通过LEADTOOLS云服务API在Java应用程序中。