智能媒體管理產品文檔轉換/預覽功能介紹(4)--快速搭建

摘要: 智能媒體管理提供了 Cloud Native 架構的文檔轉換/預覽服務,本文介紹快速搭建的示例,讓您用 DIY 的體驗方式實現文檔預覽功能。html

1、導語

智能媒體管理 提供了 Cloud Native 架構的文檔轉換/預覽服務,本文介紹快速搭建的示例,讓您用 DIY 的體驗方式實現文檔預覽功能。前端

2、環境準備

2.1 準備 RAM 子帳號

爲了實現安全的文檔轉換/預覽功能,本文使用 RAM 子帳號來管理資源並進行代碼開發。java

2.1.1 建立 test 子帳號

登錄 訪問控制 頁面,點擊「用戶管理」,選擇「新建用戶」,建立子帳號 test ,建立成功以下圖所示:json

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 相似 W1yyyyyyyyyyyyyyyyyyyyurl

注意:這裏提供的值只是示例,不能直接使用,具體的值請您在控制檯獲取並保存。spa

2.2 準備 OSS 服務

文檔轉換/預覽是基於 OSS 實現,須要 OSS 的存儲空間支持,本文經過 建立新桶 來實現,以下圖所示。code

在 華東2(上海區域)建立了 yourid-dev-imm 桶。
注意:該桶名只是示例,不能直接使用,須要替換爲您的桶名。orm

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、開發部署

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 ID
        String accessKeySecret = "W1yyyyyyyyyyyyyyyyyyyy"; //RAM 中 test 子帳號的 AK Secret

        IMMClient 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-shanghai.aliyuncs.com/preview/index.html 路徑訪問渲染引擎。
注意:實際使用時請把 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、參考文檔

參考以下的文章,幫助您掌握相關背景:

原文連接

相關文章
相關標籤/搜索