摘要: 智能媒体管理提供了 Cloud Native 架构的文档转换/预览服务,本文介绍快速搭建的示例,让您用 DIY 的体验方式实现文档预览功能。html
智能媒体管理 提供了 Cloud Native 架构的文档转换/预览服务,本文介绍快速搭建的示例,让您用 DIY 的体验方式实现文档预览功能。前端
为了实现安全的文档转换/预览功能,本文使用 RAM 子帐号来管理资源并进行代码开发。java
登录 访问控制 页面,点击“用户管理”,选择“新建用户”,建立子帐号 test ,建立成功以下图所示:json
在建立子帐号成功后的界面,选择 test 子帐号,点击“受权”,确保给该子帐号授予以下策略:安全
代码开发时,须要使用AK(Access Key)。在 2.1.1章节 建立子帐号成功后的界面,选择 test 子帐号,点击“管理”,进入 test 子帐号后再点击“建立 AccessKey”,保存好 AccessKey ID 和 Secret,它们将用于代码开发。
注意:目前每一个子帐号最多使用2个 AK,能够经过删除旧的 AK 来解决。架构
如上图中,获得 AK ID 相似 LTAIxxxxxxxxxxx
,对应的 AK Secret 相似 W1yyyyyyyyyyyyyyyyyyyy
。url
注意:这里提供的值只是示例,不能直接使用,具体的值请您在控制台获取并保存。spa
文档转换/预览是基于 OSS 实现,须要 OSS 的存储空间支持,本文经过 建立新桶 来实现,以下图所示。code
在 华东2(上海区域)建立了 yourid-dev-imm
桶。
注意:该桶名只是示例,不能直接使用,须要替换为您的桶名。orm
转换/预览使用 IMM 服务,先 开通产品 产品,而后 建立项目,以下图所示,在 华东2(上海区域)建立了 imm
项目。
注意:必定需保证建立 IMM 项目
时指定的 Region 要和您建立 OSS 桶 指定的区域相同,才可以正常工做,目的是避免转换时带来跨 OSS Region 访问的流量费用。
本文基于 “IntelliJ IDEA + Maven” 准备 Java 开发环境,参考 IMM 服务的 Java SDK 文档。
注意:在 pom.xml 文件中添加 aliyun-java-sdk-core
和 aliyun-java-sdk-imm
的版本依赖。
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <optional>true</optional> <version>3.5.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-imm</artifactId> <optional>true</optional> <version>1.2.1</version> </dependency>
环境准备好后,能够参考以下 Java 代码实现文档转换,技术细节请参考 转换原理。
import com.aliyuncs.imm.main.IMMClient; import com.aliyuncs.imm.model.v20170906.*; import com.aliyuncs.exceptions.*; public class TestImmOffice { public static void main(String[] args) { String accessKeyId = "LTAIxxxxxxxxxxx"; //RAM 中 test 子帐号的 AK ID String accessKeySecret = "W1yyyyyyyyyyyyyyyyyyyy"; //RAM 中 test 子帐号的 AK Secret IMMClient client = new IMMClient("cn-shanghai", accessKeyId, accessKeySecret); ConvertOfficeFormatResponse resp = new ConvertOfficeFormatResponse(); ConvertOfficeFormatRequest req = new ConvertOfficeFormatRequest(); req.setProject("IMM"); //在 IMM 中建立的项目 req.setSrcUri("oss://yourid-dev-imm/test-data/office/paxos.pptx"); //OSS 源文件路径 req.setTgtUri("oss://yourid-dev-imm/test-data/office/paxos.pptx/output"); //OSS 转换文件路径 req.setTgtType("vector"); try { resp = client.getResponse(req); System.out.printf("requestId=%s, taskId=%s, tgtloc=%s", resp .getRequestId(), resp.getTaskId(),resp.getTgtLoc()); }catch (ClientException e){ System.out.println("error"); } } }
转换成功后,您将在 OSS 的 yourid-dev-imm
桶(华东2---上海区域),对应 test-data/office/paxos.pptx/output/doc
目录下(注意:转换引擎增长了 doc
后缀),获得 meta.json
, fp*.json
, 以及 I 目录下的文件。
转换成功后,能够基于部署的前端预览引擎实现预览功能,技术介绍请参考 预览原理。以下图所示,在 yourid-dev-imm
桶(华东2---上海区域)中添加了preview目录
,它包含了预览引擎的文件。
部署预览引擎后,前端就能够经过访问预览引擎所在 OSS 桶的域名,实现预览功能。基于上述章节介绍,能够经过 https://yourid-dev-imm.oss-cn-shanghai.aliyuncs.com/preview/index.html
路径访问渲染引擎。
注意:实际使用时请把 yourid-dev-imm
更换为您的桶。
为了快速体验预览引擎的效果,咱们简化 OSS 的权限配置为公共读,以下图所示。
此时,能够经过以下地址格式完成文档预览。
https://yourid-dev-imm.oss-cn-shanghai.aliyuncs.com/preview/index.html ?url=https://yourid-dev-imm.oss-cn-shanghai.aliyuncs.com/test-data/office/paxos.pptx/output ®ion=oss-cn-shanghai &bucket=yourid-dev-imm
其中 ?
前面部分为访问渲染引擎的路径,而 url=xxx
为转换文档的目标地址(注意:在 output
后无需加上 /
,渲染引擎会自动处理), region=oss-cn-shanghai
表示 OSS 桶所在区域,bucket=yourid-dev-imm
为桶名。
注意:实际使用时,须要把 yourid-dev-imm
更换为本身的桶。
设置桶为私有,但让渲染引擎 preview
目录下的文件为公共读,而后为转换文件申请STS Token
policy = { "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:*" ], "Resource": [ "acs:oss:*:" + accountId + ":" + bucket + "/" + prefix + "/*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:" + accountId + ":" + bucket ], "Condition": { "StringLike": { "oss:Prefix": prefix + "/*" } } } ] }
此时把 accountId 设置为 * ,表示任意用户;bucket 设置为 yourid-dev-imm
,表示您本身建立的桶;prefix 设置为本文中的路径 test-data/office/paxos.pptx/output
。而后,调用 STS 的 AssumeRole 获得 AccessKeyId,AccessKeySecret,SecurityToken三元组,而后用以下方式组合,便可实现安全的预览访问。
https://yourid-dev-imm.oss-cn-shanghai.aliyuncs.com/preview/index.html ?url=https://yourid-dev-imm.oss-cn-shanghai.aliyuncs.com/test-data/office/paxos.pptx/output &accessKeyId=STS.AAAAAAAAAA &accessKeySecret=BBBBBBBBBBB &stsToken=CCCCCCCCCCCCC ®ion=oss-cn-shanghai &bucket=yourid-dev-imm &...
参考以下的文章,帮助您掌握相关背景: