智能媒体管理产品文档转换/预览功能介绍(4)--快速搭建
摘要: 智能媒体管理提供了 Cloud Native 架构的文档转换/预览服务,本文介绍快速搭建的示例,让您用 DIY 的体验方式实现文档预览功能。
一、导语
智能媒体管理 提供了 Cloud Native 架构的文档转换/预览服务,本文介绍快速搭建的示例,让您用 DIY 的体验方式实现文档预览功能。
二、环境准备
2.1 准备 RAM 子账号
为了实现安全的文档转换/预览功能,本文使用 RAM 子账号来管理资源并进行代码开发。
2.1.1 创建 test 子账号
登陆 访问控制 页面,点击“用户管理”,选择“新建用户”,创建子账号 test ,创建成功如下图所示:
2.1.2 子账号授权
在创建子账号成功后的界面,选择 test 子账号,点击“授权”,确保给该子账号授予如下策略:
AliyunOSSFullAccess。具有完整访问 OSS 的权限,让文档转换能够在 OSS 存储转换数据。本文为了快速搭建而选择此权限,如果需要更精细的权限控制,可以参考 OSS 子账号设置常见问题 。
AliyunSTSAssumeRoleAccess。具有申请 STS Token的权限,预览时为客户端提供 STS Token,从而保证前端访问 OSS 的安全性。
AliyunIMMFullAccess。具有执行 IMM 服务的权限,具有了该权限就可以调用文档转换接口。
2.1.3 生成子账号的AK(Access Key)
代码开发时,需要使用AK(Access Key)。在 2.1.1章节 创建子账号成功后的界面,选择 test 子账号,点击“管理”,进入 test 子账号后再点击“创建 AccessKey”,保存好 AccessKey ID 和 Secret,它们将用于代码开发。
注意:目前每个子账号最多使用2个 AK,可以通过删除旧的 AK 来解决。
如上图中,得到 AK ID 类似 LTAIxxxxxxxxxxx,对应的 AK Secret 类似 W1yyyyyyyyyyyyyyyyyyyy。
注意:这里提供的值只是示例,不能直接使用,具体的值请您在控制台获取并保存。
2.2 准备 OSS 服务
文档转换/预览是基于 OSS 实现,需要 OSS 的存储空间支持,本文通过 创建新桶 来实现,
在 华东2(上海区域)创建了 yourid-dev-imm 桶。
注意:该桶名只是示例,不能直接使用,需要替换为您的桶名。
2.3 准备 IMM 服务
转换/预览使用 IMM 服务,先 开通产品 产品,然后 创建项目,如下图所示,在 华东2(上海区域)创建了 imm 项目。
注意:一定需保证创建 IMM 项目 时指定的 Region 要和您创建 OSS 桶 指定的区域相同,才能够正常工作,目的是避免转换时带来跨 OSS Region 访问的流量费用。
2.4 准备开发环境
本文基于 “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>
三、开发部署
3.1 转换代码
环境准备好后,可以参考如下 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 IDString accessKeySecret = "W1yyyyyyyyyyyyyyyyyyyy"; //RAM 中 test 子账号的 AK SecretIMMClient 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 目录下的文件。
3.2 预览部署
转换成功后,可以基于部署的前端预览引擎实现预览功能,技术介绍请参考 预览原理。如下图所示,在 yourid-dev-imm 桶(华东2---上海区域)中添加了preview目录,它包含了预览引擎的文件。
3.3 前端访问
部署预览引擎后,前端就可以通过访问预览引擎所在 OSS 桶的域名,实现预览功能。基于上述章节介绍,可以通过 https://yourid-dev-imm.oss-cn... 路径访问渲染引擎。
注意:实际使用时请把 yourid-dev-imm 更换为您的桶。
3.3.1 OSS 公共读权限预览
为了快速体验预览引擎的效果,我们简化 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 更换为自己的桶。
3.3.2 OSS 私有权限预览(高安全)
设置桶为私有,但让渲染引擎 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
&...
原文链接
智能媒体管理产品文档转换/预览功能介绍(4)--快速搭建相关推荐
- 智能媒体管理产品文档转换/预览功能介绍(1)---Cloud Native架构
一.导语 办公文档是每个人日常频繁使用的工具,ppt.word.xls.wps.pdf等为我们工作和生活带来了很多的便利,本文介绍在云计算和智能手机时代,基于 智能媒体管理 的新型Cloud Nati ...
- 前端【vue】实现文档在线预览功能,在线预览pdf、word、xls、ppt等office文件
前端江太公 前端实现文档在线预览功能 最直接的就是使用XDOC 文档云服务 XDOC可以实现预览以DataURI表示的DOC文档,此外XDOC还可以实现文本.带参数文本.html文本.json文本.公 ...
- office 文档 在线预览功能实现(word,excel,pdf,ppt等多种格式)——使用https://view.xdocin.com/view 提示文档过期——基础积累
web实现office文档在线预览功能--基础积累 最近遇到一个需求,就是要实现多种文档链接的在线预览,最简单的方式就是通过window.open(url地址)的方式来实现. 但是如果要求是在一个弹窗 ...
- Android实现文档在线预览功能
前段时间,项目中有个需求是实现文档预览的功能,Android要实现该功能要比IOS复杂的多,下面就我调研的情况,总结一下,供大家参考: 一.WebView 网页显示 该方式类似于ios的实现方式,使用 ...
- 阿里云智能媒体服务 oss文档转换及预览
本人 在工作中 也是接触到这个需求 我们本身的文档 都存储在阿里云的oss上 ,由于浏览文档需要下载后观看 为了方便浏览文档方便 开了这样一个功能 将文档转换成图片来进行预览 好了 废话就不多说了 下 ...
- 使用Openoffice实现并发多进程word文档转换预览
一.环境介绍 java openoffice 4.1.6 springboot整合开发 二.代码实现 pom文件依赖 在pom文件中添加项目依赖: <!-- https://mvnreposit ...
- Java 实现文档在线预览功能
一.说明 因系统需要,要在系统中做一个文档预览的功能,网上有挺多第三方的工具,但是都是收费的,有 什么永中啊,OFFICE 365 XDOC啊,这些大概一搜都能搜到,价格也不是很贵. 但是,能不付费就 ...
- 开源文件文档在线预览项目解决方案kkFileView本地搭建运行与Docker部署运行
场景 kkFileView 支持 office, pdf, cad 等办公文档 支持 txt, xml(渲染), md(渲染), java, php, py, js, css 等所有纯文本 支持 zi ...
- 【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word、Excel、ppt等office文件
文章目录 @[TOC](文章目录) 方法一. Luckysheet 预览 方法二. Office Web 查看器(微软的开发接口) 方法三. XDOC文档预览云服务(预览pdf.word.xls.pp ...
最新文章
- C#之值类型和引用类型
- 大赛季(2020)新一代信息技术行业赛赛事公告
- 告别苦逼的程序员生涯,我的CTO之路!
- 数据库系统概论:第三章 关系数据库标准语言SQL
- word表格转换成html,delphi将word表格转换成html_取得Word 表格中的数据
- integer expression expected或者unary operator expected
- Win7以上系统通过Dbgview打印驱动日志
- ubuntu桌面模式下,鼠标右键没有新建文档,的解决方法
- MOOC北京理工《C语言程序设计(上)》第4周第2题:确定母亲节
- NET Reflector
- # 个人日记-书籍《银河帝国2之基地与帝国》观后感-20210808
- 使用matplotlib画3d平面风场_新篇章:12激光SLM金属3D打印机开卖,速度提升20倍,工业批量化生产新利器...
- CSS的3d翻滚特效
- Android-内存泄露知识详解
- 跨专业保研上交计算机,新闻学到经济学,跨专业保研血泪史
- NVIDIA VIDEO CODEC SDK开发资源下载
- 微信图片消息 服务器故障,解决图片上传到微信服务器后无法显示问题
- 使用公网NAT网关SNAT功能访问互联网
- 移动比联通强的原因^_^
- Unity HoloLens 开发调试及部署配置【新】