本文共 3366 字,大约阅读时间需要 11 分钟。
本文将演示如何使用IMM快速搭建文档预览服务。
演示用到的所有资源region都创建到:华东1
上传文件可以使用工具,也可以使用OSS控制台上传。
演示环境的待转换文档路径为:
oss://preview-office-bucket/docs/input/demo.pptx
演示环境的文档转换后存放路径为:
oss://preview-office-bucket/docs/output/demo_pptx
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目录是否生成目标文件:
文档转换完成后,需要在线预览,还需要完成以下步骤:
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复制到浏览器中,即可看到预览效果:
转载地址:http://jgixa.baihongyu.com/