博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用nodeJs快速搭建IMM文档预览服务
阅读量:6307 次
发布时间:2019-06-22

本文共 3366 字,大约阅读时间需要 11 分钟。

本文将演示如何使用IMM快速搭建文档预览服务。

演示用到的所有资源region都创建到:华东1

准备工作

  • 登录阿里云控制台
  • 开通OSS、IMM服务
  • 进入, 创建Bucket,存放待转换文档

image

  • 进入,创建IMM文档转换Project

image

将待转换文档上传到Bucket

上传文件可以使用工具,也可以使用OSS控制台上传。

演示环境的待转换文档路径为:

oss://preview-office-bucket/docs/input/demo.pptx

演示环境的文档转换后存放路径为:

oss://preview-office-bucket/docs/output/demo_pptx

image

提交文档转换任务

  • ,并记录下AK信息,用于提交IMM文档转换任务和OSS临时权限签发。OSS临时权限签发是授权预览引擎获取OSS文档的权限,在下一步生成预览文档url会用到。

image

  • 给用户添加STS和IMM的权限

image

  • 新建nodeJs项目,安装IMM SDK。
npm install @alicloud/pop-core --save
  • 提交文档转换任务:
const { RPCClient } = require('@alicloud/pop-core');  // 填写刚才创建用户时记录下的AK信息  const accessKeyId = 'LT******xR';  const accessKeySecret = 'rB******QN';  var client = new RPCClient({    endpoint:'http://imm.cn-hangzhou.aliyuncs.com',    accessKeyId: accessKeyId,    accessKeySecret: accessKeySecret,    apiVersion: '2017-09-06'  });  try{    var params = {      Project: "imm-server",      SrcUri: "oss://preview-office-bucket/docs/input/demo.pptx",      TgtType: "vector",      TgtUri: "oss://preview-office-bucket/docs/output/demo_pptx"    };    var result = await client.request("createOfficeConversionTask", params);    console.log(result);  }catch(err){    console.log(err);  }

执行代码后,查看output目录是否生成目标文件:

image

生成预览文档url

文档转换完成后,需要在线预览,还需要完成以下步骤:

  • 新建一个bucket,选择公共读,用于存放前端预览引擎:

image

  • 前端预览引擎,解压后,上传到preview-index。

image

  • 给存放文档的bucket设置跨域访问,因为前端预览引擎页面会跨域获取存放到preview-office-bucket的文档内容

image

  • ,添加OSS的权限,用于签发OSS临时权限。

image

image

const { RPCClient } = require('@alicloud/pop-core');  const accountId = '1042201747765506';  const roleArn = 'acs:ram::1042201747765506:role/ststest';  const accessKeyId = 'LT******xR';  const accessKeySecret = 'rB******QN';  const region = "oss-cn-hangzhou";  // 存放文档的bucket  const bucket = "preview-office-bucket";  // 预览引擎的访问地址  const previewUrl = 'http://preview-index.oss-cn-hangzhou.aliyuncs.com/index.html';    var client = new RPCClient({    endpoint:'https://sts.aliyuncs.com',    accessKeyId: accessKeyId,    accessKeySecret: accessKeySecret,    apiVersion: '2015-04-01'  });  try{    var params = {      // AssumeRole action      Action: 'AssumeRole',      // 有权限访问OSS的角色      RoleArn: roleArn,      // 此参数用来区分不同的Token,以标明谁在使用此Token,便于审计。格式:^[a-zA-Z0-9.@-_]+$,2-32个字符      RoleSessionName: accountId,      // 权限最小化,限制用户只能访问该文档      Policy: JSON.stringify({        "Version": "1",        "Statement": [          {            "Effect": "Allow",            "Action": [              "oss:GetObject"            ],            "Resource": [              `acs:oss:*:${accountId}:${bucket}/docs/output/demo_pptx/*`            ]          }        ]      }),      // 有效期      DurationSeconds: 3600    };    var result = await client.request('AssumeRole', params);        function parse(params){      return Object.keys(params).map((key) => {        return `${key}=${params[key]}`;      }).join("&");    }    var params = {};    // 预览文档地址    params.url = `http://${bucket}.${region}.aliyuncs.com/docs/output/demo_pptx`;    // 访问预览文档的accessKeyId    params.accessKeyId = result.Credentials.AccessKeyId;    // 访问预览文档的accessKeySecret    params.accessKeySecret = result.Credentials.AccessKeySecret;    // 访问预览文档的SecurityToken    params.stsToken = encodeURIComponent(result.Credentials.SecurityToken);    // 预览文档的region    params.region = region;    // 预览文档的bucket    params.bucket = bucket;    var url = `${previewUrl}?${parse(params)}`    console.log(url);  }catch(err){    console.log(err);  }

执行成功后打印的url复制到浏览器中,即可看到预览效果:

image

转载地址:http://jgixa.baihongyu.com/

你可能感兴趣的文章
你可能不知道的 css tricks
查看>>
服务网格内部的 VirtualService 和 DestinationRule 配置深度解析
查看>>
我的友情链接
查看>>
SEO工作之友好引导(二)
查看>>
ifcfg/ip/ss命令详解
查看>>
关于 Flume NG
查看>>
北电交换机常用配置
查看>>
Linux磁盘及文件系统管理
查看>>
Linux系统下Apache日志文件设置、更改默认网站目录、防止php***跨站设置、禁止空主机头...
查看>>
shell判断文件是否存在
查看>>
EXCHANGE事务日志和邮箱数据库的存储位置
查看>>
oracle conn /as sysdba后显示 乱码”???“
查看>>
(三)把域服务升级和迁移到Windows Server 2012 R2上
查看>>
动态主机配置协议:DHCP简介
查看>>
跟我学Spring Cloud(Finchley版)-05-服务注册与服务发现-Eureka入门
查看>>
VisualStudio不让控制台程序一闪而过
查看>>
交换机配置
查看>>
python读取excel表格的数据
查看>>
折半查找
查看>>
写给创始人的期权问答及实操白皮书(连载一)
查看>>