使用Java对接永中云预览实现文档在线预览

永中云预览是基于永中DCS文档在线预览能力把源文档输出问HTML,方便查阅文档。首先将文件通过上传接口上传到永中服务器,然后会返回根据文件生成的文件ID和文件版本ID;然后根据获得的文件版本ID使用文件预览接口获取预览地址。
首先要先成为开发者并且申请应用。在永中云服务平台首页(https://open.yozocloud.cn)点击”申请加入“填写信息,然后提交就好了。之后点击页面右上角的”管理中心“,点击”申请添加新应用“按钮申请应用,然后就获得了下图的appId和appKey。
使用Java对接永中云预览实现文档在线预览_第1张图片
然后阅读云预览开发文档。官网的开发文档里有预览时要用到的所有接口,也给出了返回示例供参考,还有在使用过程中的遇到的常见问题也是做了总结。
使用Java对接永中云预览实现文档在线预览_第2张图片
下面就是具体的接入步骤啦,总的来说是非常简单的。
第一步:导入jar包生成签名。官网专门提供了几种流行编程语言的SDK,根据自己的开发语言下载对应的SDK及demo生成签名。这里使用的是JAVA SDK。
SDK下载地址:https://cms.yozocloud.cn/info...
DEMO下载地址:https://cms.yozocloud.cn/info...

public static String APPID = "XXXX";
public static String APPKEY = "XXXXXX";
public static String VIEWFILE = "XXXXXX";

/**
 * 获取签名信息
 *
 * @param map 参数k-v
 * @return 签名
 * @throws Exception 异常
 */
String getSign(Map 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 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 = "8-12周岁儿童氟斑牙调查表.xlsx";

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

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

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

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

JSONObject data = JSONObject.parseObject(response.getBody()).getJSONObject("data");
String fileVersionId = data.getString("fileVersionId");//获取返回的fileVersionId
Map paramMap = new HashMap<>();
paramMap.put("fileVersionId", new String[]{fileVersionId});
String s = getSign(paramMap);//生成签名
System.out.println("预览地址:" + VIEWFILE + "?appId=" + APPID + "&fileVersionId=" + fileVersionId + "&sign=" + s);//跳转预览地址

最后,运行程序就可以得到预览地址,点击就可以直接预览。
使用Java对接永中云预览实现文档在线预览_第3张图片
下面是源文档和使用云预览预览文档的对比:
使用Java对接永中云预览实现文档在线预览_第4张图片 (源文档)
使用Java对接永中云预览实现文档在线预览_第5张图片(云预览)
总结:云预览在实现在线预览文档的同时也不会暴露文档的下载地址,并且预览链接有效时长是可以自己通过参数(expiration)设置的。开发文档里还有很多参数可以设置比如水印内容、是否防复制、是否可下载源文件等等。总的来说调用云预览一共就三个步骤:获取签名、上传文件、获取地址,简单的代码就可以直接搞定,预览效果也是不会出现版式错乱,内容跑版等情况,还是十分方便快捷高效的。

你可能感兴趣的:(java)