使用Java对接永中格式转换

Posted 华东彭于晏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Java对接永中格式转换相关的知识,希望对你有一定的参考价值。

永中格式转换服务基于永中DCS的文档转换能力,支持不同格式文件之间的高质量互转,可实现PDF文档与Word、Excel、PPT、图片的高质量互转,PDF文档转换完美保留原文档的版式,格式等,转换效果出色,转换速度快,提供高效的文件格式转换能力。

首先要先成为开发者并且申请应用。在永中云服务平台首页(https://open.yozocloud.cn)点击”申请加入“填写信息,然后提交就好了。之后点击页面右上角的”管理中心“,点击”申请添加新应用“按钮申请应用,然后就获得了下图的appId和appKey。

 

 

然后阅读格式转换开发文档。官网的开发文档里有对接服务时要用到的所有接口,也给出了返回示例供参考,还有在使用过程中的遇到的常见问题也是做了总结。

 

 

下面就是具体的接入步骤:

第一步:导入jar包生成签名。官网专门提供了几种流行编程语言的SDK,根据自己的开发语言下载对应的SDK及demo生成签名。这里使用的是JAVA SDK。

SDK下载地址:https://cms.yozocloud.cn/info/file/getResource/81

DEMO下载地址:https://cms.yozocloud.cn/info/file/getResource/82

public static String APPID = "XXXX";
public static String APPKEY = "XXXXXX";
public static String CONVERTTYPE = "7";  //excel转pdf

/**
 * 获取签名信息
 *
 * @param map 参数k-v
 * @return 签名
 * @throws Exception 异常
 */
String getSign(Map<String,String[]> map) throws Exception 
   map.put("appId",new String[]APPID);
   AppAuthenticator authenticator=new UaaAppAuthenticator(UaaConstant.SIGN,null,UaaConstant.APPID);
   String sign = authenticator.generateSign(APPKEY, map);
   System.out.println("sign = " + sign);
   return sign;

第二步:上传文件。这里我使用RestTemplate发送Post请求,要注意的是上传文件时文件类型一定要是multipartFile类型,否则会报错:message:服务器未知错误^_^。

/**
 * 上传文件
 */
Map<String, String[]> params = new HashMap<>();
String sign = getSign(params);
String url = "http://dmc.yozocloud.cn/api/file/upload?appId=0&sign=1";
url = url.replace("0", APPID).replace("1", sign);
System.out.println("url:" + url);
//上传文件
String filePath = "C:";
String fileName = "11111.xlsx";

//设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("multipart/form-data"));//文件类型是multipartFile类型

//设置请求体,注意是LinkedMultiValueMap
FileSystemResource fileSystemResource = new FileSystemResource(filePath + "/" + fileName);
MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
form.add("file", fileSystemResource);

RestTemplate restTemplate1 = new RestTemplate();
restTemplate1.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
ResponseEntity<String> response1 = restTemplate1.exchange(url, HttpMethod.POST, new HttpEntity<>(form, headers), String.class);//防止返回信息乱码
System.out.println("返回信息为: " + response1.getBody());

//获取返回的fileVersionId
JSONObject data = JSONObject.parseObject(response1.getBody()).getJSONObject("data");
String fileVersionId = data.getString("fileVersionId");

第三步:调用转换接口。每次调用接口时,用到了哪些参数就将这些参数去生成sign,multipartFile除外,用不到的参数也不要传null或者空字符串。

/**
 * 调用转换接口
 */
Map<String, String[]> paramMap = new HashMap<>();
paramMap.put("fileVersionId", new String[]fileVersionId);
paramMap.put("convertType", new String[]CONVERTTYPE);
String s = getSign(paramMap);//生成签名
String converurl = "http://eic.yozocloud.cn/api/convert/file?appId=0&sign=1&fileVersionId=2&convertType=3";
converurl = converurl.replace("0", APPID).replace("1", s).replace("2",fileVersionId).replace("3",CONVERTTYPE);

RestTemplate restTemplate2 = new RestTemplate();
restTemplate2.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
ResponseEntity<String> response2 = restTemplate2.postForEntity(converurl, null, String.class);
System.out.println("返回信息为: " + response2.getBody());

正常情况下,转换类型设置正确,文件上传正确,调用格式转换接口后的返回信息如下:

 

 

第四步:调用下载接口下载查看。调用转换接口并返回操作成功之后,在设置的回调地址除会收到转换之后的文件版本Id,如下:

使用收到的新的文件版本Id再次生成签名并调用下载接口(http://dmc.yozocloud.cn/api/file/download),该地址可直接放入浏览器地址栏下载查看。

 

源文件

 

格式转换后得到的文件

注意:

  1. 用户须在格式转换的开发信息中填写正确的数据回调地址来接收新的文件版本id,并且在数据回调URL下新增一个POST接口,接口名称设置为:/3rd/edit/callBack;

接口接收转换回调数据代码示例

  1. 格式转换convertType参数一定要对应正确,否则调用接口时会返回“文档格式与转换类型不匹配“。

以上是关于使用Java对接永中格式转换的主要内容,如果未能解决你的问题,请参考以下文章

永中文档在线转换预览双活实现方案

.NET Core RSA密钥的xmlpkcs1pkcs8格式转换和JavaScriptJava等语言进行对接

.NET Core RSA密钥的xmlpkcs1pkcs8格式转换和JavaScriptJava等语言进行对接

为 Blogger 上的博客格式化代码片段 [关闭]

java字符串格式转换成日期格式

怎样在线预览Word文档