摘要: 智能媒体管理提供了 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
&region=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
&region=oss-cn-shanghai
&bucket=yourid-dev-imm
&...

原文链接

智能媒体管理产品文档转换/预览功能介绍(4)--快速搭建相关推荐

  1. 智能媒体管理产品文档转换/预览功能介绍(1)---Cloud Native架构

    一.导语 办公文档是每个人日常频繁使用的工具,ppt.word.xls.wps.pdf等为我们工作和生活带来了很多的便利,本文介绍在云计算和智能手机时代,基于 智能媒体管理 的新型Cloud Nati ...

  2. 前端【vue】实现文档在线预览功能,在线预览pdf、word、xls、ppt等office文件

    前端江太公 前端实现文档在线预览功能 最直接的就是使用XDOC 文档云服务 XDOC可以实现预览以DataURI表示的DOC文档,此外XDOC还可以实现文本.带参数文本.html文本.json文本.公 ...

  3. office 文档 在线预览功能实现(word,excel,pdf,ppt等多种格式)——使用https://view.xdocin.com/view 提示文档过期——基础积累

    web实现office文档在线预览功能--基础积累 最近遇到一个需求,就是要实现多种文档链接的在线预览,最简单的方式就是通过window.open(url地址)的方式来实现. 但是如果要求是在一个弹窗 ...

  4. Android实现文档在线预览功能

    前段时间,项目中有个需求是实现文档预览的功能,Android要实现该功能要比IOS复杂的多,下面就我调研的情况,总结一下,供大家参考: 一.WebView 网页显示 该方式类似于ios的实现方式,使用 ...

  5. 阿里云智能媒体服务 oss文档转换及预览

    本人 在工作中 也是接触到这个需求 我们本身的文档 都存储在阿里云的oss上 ,由于浏览文档需要下载后观看 为了方便浏览文档方便 开了这样一个功能 将文档转换成图片来进行预览 好了 废话就不多说了 下 ...

  6. 使用Openoffice实现并发多进程word文档转换预览

    一.环境介绍 java openoffice 4.1.6 springboot整合开发 二.代码实现 pom文件依赖 在pom文件中添加项目依赖: <!-- https://mvnreposit ...

  7. Java 实现文档在线预览功能

    一.说明 因系统需要,要在系统中做一个文档预览的功能,网上有挺多第三方的工具,但是都是收费的,有 什么永中啊,OFFICE 365 XDOC啊,这些大概一搜都能搜到,价格也不是很贵. 但是,能不付费就 ...

  8. 开源文件文档在线预览项目解决方案kkFileView本地搭建运行与Docker部署运行

    场景 kkFileView 支持 office, pdf, cad 等办公文档 支持 txt, xml(渲染), md(渲染), java, php, py, js, css 等所有纯文本 支持 zi ...

  9. 【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word、Excel、ppt等office文件

    文章目录 @[TOC](文章目录) 方法一. Luckysheet 预览 方法二. Office Web 查看器(微软的开发接口) 方法三. XDOC文档预览云服务(预览pdf.word.xls.pp ...

最新文章

  1. C#之值类型和引用类型
  2. 大赛季(2020)新一代信息技术行业赛赛事公告
  3. 告别苦逼的程序员生涯,我的CTO之路!
  4. 数据库系统概论:第三章 关系数据库标准语言SQL
  5. word表格转换成html,delphi将word表格转换成html_取得Word 表格中的数据
  6. integer expression expected或者unary operator expected
  7. Win7以上系统通过Dbgview打印驱动日志
  8. ubuntu桌面模式下,鼠标右键没有新建文档,的解决方法
  9. MOOC北京理工《C语言程序设计(上)》第4周第2题:确定母亲节
  10. NET Reflector
  11. # 个人日记-书籍《银河帝国2之基地与帝国》观后感-20210808
  12. 使用matplotlib画3d平面风场_新篇章:12激光SLM金属3D打印机开卖,速度提升20倍,工业批量化生产新利器...
  13. CSS的3d翻滚特效
  14. Android-内存泄露知识详解
  15. 跨专业保研上交计算机,新闻学到经济学,跨专业保研血泪史
  16. NVIDIA VIDEO CODEC SDK开发资源下载
  17. 微信图片消息 服务器故障,解决图片上传到微信服务器后无法显示问题
  18. 使用公网NAT网关SNAT功能访问互联网
  19. 移动比联通强的原因^_^
  20. Unity HoloLens 开发调试及部署配置【新】

热门文章

  1. 生产环境GC故障解决过程记录
  2. HDU 4609 3-idiots FFT
  3. Python内置类型——list
  4. Apache Spark源码走读之8 -- Spark on Yarn
  5. HttpServlet详解
  6. 毕业仅1年,干Python赚了50W 网友:不是吹的
  7. 分享如何在Ubuntu 16.04下CUDA8.0
  8. ssl证书是由什么组成?ssl证书是什么?
  9. Docker的原理及特性介绍
  10. DAIC:针对BEC欺诈的开源利器