智能媒体管理产品文档转换/预览功能介绍(3)---预览原理

一、导语

智能媒体管理产品 提供了 Cloud Native 架构 的文档转换/预览服务,本文介绍其中的预览原理和使用方法。

二、预览原理

2.1 预览流程

2.1.1 部署和使用预览引擎

预览的核心,是利用前端 Java Script 渲染引擎,显示后端用 智能媒体管理 的文档转换 API 得到的结果( 转换时使用VECTOR 模式)。

为了帮助您更好,我们提供了预览渲染引擎,地址为 https://preview.imm.aliyun.com/index.html ,参考 文档预览 获取更多信息,特别是配置存储转换数据的 OSS 桶支持 CORS。

从而通过如下方式实现文档预览。

https://preview.imm.aliyun.com/index.html    //确认 index.html 路径正确
?url=https://your-bucket.oss-cn-shanghai.aliyuncs.com/office-file/output    //无需在 output 后加'/'
&region=oss-cn-shanghai    //转换数据所在桶的 region
&bucket=your-bucket    //转换数据所在桶

其中,请求字段中 url=https://your-bucket.oss-cn-shanghai.aliyuncs.com/office-file/output 是传递给渲染引擎的路径,该路径下存放文档转换结果( VECTOR 模式)。

注意:https://preview.imm.aliyun.com/index.html 是智能媒体管理服务提供的渲染引擎,your-bucket 是您自己的桶。

2.1.2 预览服务全流程

现基于阿里云构建的网盘服务 DEMO ,来讲解预览全流程,如下图所示。网盘服务 DEMO 在阿里云上开通 OSS 和 智能媒体管理产品 ,并且把预览的渲染引擎代码部署在网盘服务的域名环境下。

预览全流程

预览过程如下:
1) 网盘客户端 选择网盘中的某个文档 A,向 网盘服务端 发起预览请求。
2) 网盘服务端 得到文档 A 在 OSS 的路径,调用 智能媒体管理产品 文档转换的异步 API,可以指定转换文件的目标 OSS 路径。
3) 智能媒体管理产品 启动转换,同时返回目标 OSS 路径给 网盘服务端
4) 网盘服务端 将渲染引擎 index.html、相关 js 文件,以及目标 OSS 路径返回给 网盘客户端
5) 网盘客户端 在浏览器中基于 index.html,轮询目标 OSS 路径生成内容(也可以在调用文档转换 API 时注册事件通知,然后基于通知进行显示),一旦生成了内容,即开始渲染显示。
6) 智能媒体管理产品 文档转换的任务将转换目标文件写入到指定的 OSS 路径,直到转换完毕。

2.2 安全预览设计

文档预览可以在终端设备(例如智能手机)显示,因此需要考虑数据的安全性,在 智能媒体管理产品 的 Cloud Native 架构下,可以利用 OSS 的安全机制。

2.2.1 OSS 安全机制

使能 OSS 设置安全令牌,然后通过 STS 临时授权访问 为终端设备申请访问的 Token。

2.2.2 申请 Token 时控制 OSS 目标路径的只读权限的 Policy

在申请 STS 时,可以指定 OSS 路径的访问权限,如下为设置 office-file/output/* 资源的只读权限;其中 office-file/output 为指定存放转换结果输出的路径。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "oss:*"
      ],
      "Resource": [
        "acs:oss:*:*:your-bucket/office-file/output/*"
      ]
    }
    {
        "Effect": "Allow",
        "Action": [
          "oss:ListObjects"
        ],
        "Resource": [
          "acs:oss:*:*:your-bucket"
        ],
        "Condition": {
          "StringLike": {
            "oss:Prefix": "office-file/output/*"
          }
        }
      }
  ]
}

云盘服务端申请 STS 的 Token 成功后,会得到 accessKeyIdaccessKeySecretstsToken 字段,然后发送给云盘客户端,客户端把这些字段加入到预览访问请求中,从而通过如下格式实现 安全访问 文档预览。

2.2.3 生成安全的预览URL
https://preview.imm.aliyun.com/index.html
?url=https://your-bucket. oss-cn-shanghai.aliyuncs.com/office-file/output    //无需在output后加'/'
&region=oss-cn-shanghai    //转换数据所在桶的region
&accessKeyId=STS.AAAAAAAAAA
&accessKeySecret=BBBBBBBBBBB
&stsToken=CCCCCCCCCCCCC    //CCCCCCCCCCCCC是encode(STS返回stsToken)的结果
&bucket=your-bucket    //转换数据所在桶

注意1:your-bucket 要替换为您自己的桶。
注意2:stsToken 字段,需要在STS返回的stsToken基础上使用encode处理,然后再拼到上述URL中,如下图红框所示(基于 nodeJS 实现)。

EncodeSTSToken

三、预览效果

3.1 支持大文件

如下图所示,在网盘 DEMO 中存放了 92.68 MB 大小的 pptx 文件 SP14 cs188 Lecture 18 -- Bayes Nets III Interface.pptx

大文件

3.2 预览翻页

通过转换并渲染得到的预览如下图所示,可以进行 左右翻页控制、全屏控制、以及缩放操作。

预览翻页

四、预览优化

基于前端使用渲染框架,后端提供渲染数据的解耦方案,还可以提供更多的特性。

4.1 定制化预览

通过前端提供 插件化框架,可以在预览时插入您自定义的广告,以及控制广告在页面的位置、长度、宽度,并且随着预览页面的缩放而联动。

4.2 加密文档预览

通过后端判断是否加密文档的结果,前端进行判断,然后通过插件化框架加载 您的密码输入和安全管理控件,从而可以让您预览加密的文档。

五、参考文档

  1. 智能媒体管理产品文档转换/预览功能介绍(1)---Cloud Native架构
  2. 智能媒体管理产品文档转换/预览功能介绍(2)---转换原理
  3. 智能媒体管理产品文档转换/预览功能介绍(4)--快速搭建
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Joint模块的Verilog代码及其激励文件: ``` module Joint( input [31:0] DataIn, output [31:0] imm12, output [31:0] imm16, output [31:0] imm20, output [31:0] imm26 ); //对ADDI.w, LD.W, ST.W指令中的12位立即数进行符号位扩展 assign imm12 = {{20{DataIn[21]}}, DataIn[21:10]}; //对BEQ,BLT指令中的立即数进行符号位扩展及其他部分的拼接 assign imm16 = {{14{DataIn[25]}}, {DataIn[25:10], 2'b0}}; //对lui12i.w指令中的20位立即数,低12位补0 assign imm20 = {DataIn[24:5], 12'b0}; //对B指令中的立即数进行符号位扩展及其他部分的拼接 assign imm26 = {{4{DataIn[25]}}, DataIn[9:0], {DataIn[25:10], 2'b0}}; endmodule ``` 激励文件如下: ``` module Joint_tb; reg [31:0] DataIn; wire [31:0] imm12; wire [31:0] imm16; wire [31:0] imm20; wire [31:0] imm26; Joint joint( .DataIn(DataIn), .imm12(imm12), .imm16(imm16), .imm20(imm20), .imm26(imm26) ); initial begin DataIn = 32'h00123456; #10; $display("DataIn = 0x%h, imm12 = 0x%h, imm16 = 0x%h, imm20 = 0x%h, imm26 = 0x%h", DataIn, imm12, imm16, imm20, imm26); DataIn = 32'h000A0000; #10; $display("DataIn = 0x%h, imm12 = 0x%h, imm16 = 0x%h, imm20 = 0x%h, imm26 = 0x%h", DataIn, imm12, imm16, imm20, imm26); DataIn = 32'h0F0F0F0F; #10; $display("DataIn = 0x%h, imm12 = 0x%h, imm16 = 0x%h, imm20 = 0x%h, imm26 = 0x%h", DataIn, imm12, imm16, imm20, imm26); DataIn = 32'h0FFFFFED; #10; $display("DataIn = 0x%h, imm12 = 0x%h, imm16 = 0x%h, imm20 = 0x%h, imm26 = 0x%h", DataIn, imm12, imm16, imm20, imm26); $finish; end endmodule ``` 以上激励文件中,我们通过修改`DataIn`的值,测试了不同类型指令对应的输出结果。在仿真过程中,我们通过`$display`函数输出了输入值和输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值