废话不多说,直接上代码
import com.aliyun.imm20170906.models.CreateOfficeConversionTaskRequest;
import com.aliyun.imm20170906.models.CreateOfficeConversionTaskResponse;
import com.aliyun.imm20170906.models.GetOfficeConversionTaskRequest;
import com.aliyun.imm20170906.models.GetOfficeConversionTaskResponse;
import com.aliyun.teaopenapi.models.Config;
/**
* 阿里云oss转PDF(本例子基于阿里北京区域)
* 需要引的maven
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>imm20170906</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-imm</artifactId>
<version>1.23.4</version>
</dependency>
* 参考文档:
* 1.文档转换异步请求:https://help.aliyun.com/document_detail/72044.html
* 2.获取文档转换结果:https://help.aliyun.com/document_detail/72045.html
* 3.设置文件生命周期:https://help.aliyun.com/document_detail/31904.html
*/
public class OssWord2PdfTest {
/**
* 阿里的AK和SK
*/
public static final String accessKeyId = "******";
public static final String accessKeySecret = "******";
/**
* 使用AK&SK初始化账号Client
*
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.imm20170906.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
// 您的AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "imm.cn-beijing.aliyuncs.com";
return new com.aliyun.imm20170906.Client(config);
}
public static void main(String[] args) {
try {
//智能媒体项目名称
String immProject = "cloud-center-imm-test";
//文件存放的bucket(建议转换前后都在同一bucket)
String bucket = "your_bucker";
String filePath = "test/测试word.docx";
String tgtFileName = "测试pdf";
com.aliyun.imm20170906.Client client = createClient(accessKeyId, accessKeySecret);
CreateOfficeConversionTaskRequest createOfficeConversionTaskRequest = new CreateOfficeConversionTaskRequest()
.setProject(immProject)
.setTgtType("pdf")
.setSrcUri("oss://" + bucket + "/" + filePath)
//设置pdf存放路径
.setTgtUri("oss://" + bucket + "/imm-format-convert-tgt/")
//设置生成文件信息(可以用uuid)
.setTgtFilePrefix(tgtFileName)
.setTgtFileSuffix(".pdf")
//true:使用向量模式,预览效果比较清晰,但是转换耗时较长。false:使用图片模式,预览效果一般,但是转换耗时较短。
.setPdfVector(true);
// 复制代码运行请自行打印 API 的返回值
CreateOfficeConversionTaskResponse response = client.createOfficeConversionTask(createOfficeConversionTaskRequest);
System.out.println(response);
String taskId = response.getBody().getTaskId();
//转换完后,for循环提取是否转换完成
int count = 0;
for (; count < 10; count++) {
//未转换完成,休眠2秒
Thread.sleep(2000);
GetOfficeConversionTaskRequest getOfficeConversionTaskRequest = new GetOfficeConversionTaskRequest()
.setProject(immProject)
.setTaskId(taskId);
// 复制代码运行请自行打印 API 的返回值
GetOfficeConversionTaskResponse getOfficeConversionTaskResponse = client.getOfficeConversionTask(getOfficeConversionTaskRequest);
System.out.println(getOfficeConversionTaskResponse);
if ("Finished".equals(getOfficeConversionTaskResponse.getBody().getStatus())) {
//转换完成,跳出循环
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}