永中格式转换服务基于永中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),该地址可直接放入浏览器地址栏下载查看。
源文件
格式转换后得到的文件
注意:
接口接收转换回调数据代码示例