使用nodeJs快速搭建IMM文档预览服务

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 使用nodeJs搭建IMM文档预览服务

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

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

准备工作

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

image

image

将待转换文档上传到Bucket

上传文件可以使用OSS Bowser工具,也可以使用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

目录
相关文章
|
2月前
|
编解码 安全 对象存储
智能媒体管理文档转换的上限参数
【2月更文挑战第15天】 智能媒体管理文档转换的上限参数
39 8
|
搜索推荐 API 对象存储
使用智能媒体管理(IMM)快速搭建人脸搜索服务
在服务构建中,我们经常需要对用户的图片做进一步分析。本文利用 智能媒体管理(IMM) 提供的图片索引功能,快速搭建一个人脸搜索的功能,示例使用 Python 2.7 实现。
2148 0
|
Web App开发 对象存储 索引
使用智能媒体管理(IMM)快速搭建图片分类服务
在服务构建中,我们经常需要对用户的图片做进一步分析。本文利用 智能媒体管理(IMM) 提供的图片索引功能,快速搭建一个图片分类的功能,示例使用 PHP 语言实现。
2919 0
|
消息中间件 API Python
IMM 服务(智能媒体管理)通过 MNS 队列通知获取异步任务执行结果--Python示例
IMM服务(智能媒体管理)的 API 提供异步接口能力,处理大文件的文档转码、图像或者视频的 AI 处理,此时采用轮训的方式(比如文档转码的 GetOfficeConversionTask接口)效率不高,通过 MNS 队列通知获取异步任务执行结果是一种高效的方式,转载文章提供了 Python 示例,供大家参考。
1626 0
|
Web App开发 API
智能媒体管理(IMM)文档转换/预览提供 API 按量计费模式
智能媒体管理 (Intelligent Media Management, IMM) 是阿里云的云服务,它通过 文档标准型 实例提供了 Cloud Native 架构的文档转换/预览功能 ,本文介绍 API 按量计费模式的配置。
3174 0
|
Web App开发 JavaScript
【转载文章】智能媒体管理文档预览快速搭建 NodeJS 教程
针对智能媒体管理产品文档预览功能,提供 NodeJS 的端到端快速搭建教程,同时官网提供了视频。
1060 0
|
Serverless
[ 转载文章 ]函数计算 (FC) 和智能媒体管理 (IMM) 结合构建 serverless 文档转换/预览服务
阿里云函数计算和智能媒体管理相结合,快速实现一个弹性高可用的文档转换/预览服务。
1209 0
|
Serverless PHP 对象存储
十分钟上线-FC&IMM构建serverless文档转换/预览服务
自从人类进入信息时代以来,办公文档是每个人日常频繁使用的工具,ppt、word、xls、wps、pdf 等为我们工作和生活带来了很多的便利,尤其进入云计算和移动互联网时代,人们可以利用各种终端来预览 ppt、word、pdf 等相关文档进行工作和学习,这种情况下,文档之间的格式转换,各种终端的适配预览显得尤为重要,在本文中,我们来看看阿里云函数计算和智能媒体管理相结合,快速实现一个弹性高可用的文档转换/预览服务。
3784 0
|
存储 JSON 数据挖掘
利用智能媒体管理(IMM) 搭建云相册指南
- 为用户创建智能云相册 - 支持人脸检测,获取包括人脸位置、表情、年龄等信息 - 支持人脸分组,可以根据人物搜索、展示照片 - 支持照片标签检测,可以根据标签对照片进行分类 - 支持地理位置检测,获取照片拍摄的具体位置、时间,并且可以进行搜索
1005 0

热门文章

最新文章