永中格式转换服务基于永中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对接永中格式转换的更多相关文章

  1. Java之格林威治时间格式转换成北京时间格式

    Java之格林威治时间格式转换成北京时间格式 package com.mtons.mblog; import java.text.ParseException; import java.text.Si ...

  2. Java时间日期字符串格式转换大全

    import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @return 返回时间类型 ...

  3. Java之SimpleDateFormat日期格式转换(Date 和 String 类型之间的转换)

    SimpleDateFormat : 可以选择任何用户定义的日期-时间格式的模式    "yyyy-MM-dd HH:mm:ss:SSS"1.格式化:Date -->Stri ...

  4. Java实现时间日期格式转换示例

    package com.hanqi.util; import java.text.ParseException; import java.text.SimpleDateFormat; import j ...

  5. windows保存的文件传输到linux中格式转换

    直接从window传输到linux的脚本执行时,会出现以下错误. -bash: xxx: /bin/sh^M: bad interpreter: No such file or directory 解 ...

  6. java解析Excel日期格式转换问题

    Excel上传导入,Excel里面单元格是日期的会解析出来数字,比如2020-07-11会解析为44023解决方法一: Excel单元格格式设置为文本格式.解决方法二: 使用代码处理,把解析出来的44 ...

  7. JAVA 接口返回JSON格式转换类

    使用了Lombok插件 Result.java package com.utils; import com.jetsum.business.common.constant.Constant; impo ...

  8. Java ISO 8601时间格式转换

    common-lang包: String pattern = "YYYY-MM-dd'T'HH:mm:ssZZ"; System.out.println(DateFormatUti ...

  9. 永中DCS文档转换服务其它产品对比

    一.利用DCOM配置直接操作Office文件 作用:读取文件内容,导出Html文件 优势:免费 劣势:1.服务器上必须安装Office软件 2.配置麻烦,正如微软所说,读取Office不是这么干的. ...

随机推荐

  1. 【玩具】获取B站视频的音频片段

    事情是这样的,我有个和社畜的社会地位不太相符的小爱好--听音乐剧. 基本上是在B站上点开视频听,不是不想在网易云或者QQ音乐听,只是在这些音乐软件上面,我想听的片段要不就收费,要不版本不是我喜欢的,要 ...

  2. TensorFlow 2.0 深度学习实战 —— 浅谈卷积神经网络 CNN

    前言 上一章为大家介绍过深度学习的基础和多层感知机 MLP 的应用,本章开始将深入讲解卷积神经网络的实用场景.卷积神经网络 CNN(Convolutional Neural Networks,Conv ...

  3. JVM1 JVM与Java体系结构

    目录 JVM与Java体系结构 虚拟机与Java虚拟机 虚拟机 Java虚拟机 JVM的位置 JVM的整体结构 Java代码执行流程 JVM的架构模型 基于栈的指令级架构 基于寄存器的指令级架构 两种 ...

  4. linux允许直接以root身份ssh登录

    1. sudo su - 2. vim /etc/ssh/sshd_config 3. let "PermitRootLogin" equal yes 4. :wq 5. serv ...

  5. linux添加用户、权限

    # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假 ...

  6. C语言实现鼠标绘图

    使用C语言+EGE图形库(Easy Graphics Engine).思路是通过不断绘制直线来实现鼠标绘图的功能,前一个时刻鼠标的坐标作为直线的起点,现在时刻的坐标作为终点(严格意义是线段而不是直线) ...

  7. [BUUCTF]REVERSE——[WUSTCTF2020]Cr0ssfun

    [WUSTCTF2020]Cr0ssfun 附件 步骤: 例行检查,无壳儿,64位程序,直接ida载入,检索程序里的字符串,根据提示跳转 看一下check()函数 内嵌了几个检查的函数,简单粗暴,整理 ...

  8. [BUUCTF]PWN——roarctf_2019_easy_pwn(详解)

    roarctf_2019_easy_pwn 附件 步骤: 例行检查,64位程序,保护全开 试运行一下程序,看看大概的情况,经典的堆块的菜单 64位ida载入,改了一下各个选项的函数名,方便看程序(按N ...

  9. [BUUCTF]REVERSE——[BJDCTF2020]BJD hamburger competition

    [BJDCTF2020]BJD hamburger competition 附件 步骤: 例行检查,64位程序,无壳儿 由于unity是用C++开发的,这里就不用IDA了,直接用dnspy看源码 在B ...

  10. 『与善仁』Appium基础 — 25、APP模拟手势高级操作

    目录 1.手指轻敲操作 2.手指按下和抬起操作 3.等待操作 4.手指长按操作 5.手指移动操作 6.综合练习 APP模拟手势的动作都被封装在TouchAction类中,TouchAction是App ...