摘要: 智能媒體管理提供了 Cloud Native 架構的文檔轉換/預覽服務,本文介紹快速搭建的示例,讓您用 DIY 的體驗方式實現文檔預覽功能。html
智能媒體管理 提供了 Cloud Native 架構的文檔轉換/預覽服務,本文介紹快速搭建的示例,讓您用 DIY 的體驗方式實現文檔預覽功能。前端
爲了實現安全的文檔轉換/預覽功能,本文使用 RAM 子帳號來管理資源並進行代碼開發。java
登錄 訪問控制 頁面,點擊「用戶管理」,選擇「新建用戶」,建立子帳號 test ,建立成功以下圖所示:json
在建立子帳號成功後的界面,選擇 test 子帳號,點擊「受權」,確保給該子帳號授予以下策略:安全
代碼開發時,須要使用AK(Access Key)。在 2.1.1章節 建立子帳號成功後的界面,選擇 test 子帳號,點擊「管理」,進入 test 子帳號後再點擊「建立 AccessKey」,保存好 AccessKey ID 和 Secret,它們將用於代碼開發。
注意:目前每一個子帳號最多使用2個 AK,能夠經過刪除舊的 AK 來解決。架構
如上圖中,獲得 AK ID 相似 LTAIxxxxxxxxxxx
,對應的 AK Secret 相似 W1yyyyyyyyyyyyyyyyyyyy
。url
注意:這裏提供的值只是示例,不能直接使用,具體的值請您在控制檯獲取並保存。spa
文檔轉換/預覽是基於 OSS 實現,須要 OSS 的存儲空間支持,本文經過 建立新桶 來實現,以下圖所示。code
在 華東2(上海區域)建立了 yourid-dev-imm
桶。
注意:該桶名只是示例,不能直接使用,須要替換爲您的桶名。orm
轉換/預覽使用 IMM 服務,先 開通產品 產品,而後 建立項目,以下圖所示,在 華東2(上海區域)建立了 imm
項目。
注意:必定需保證建立 IMM 項目
時指定的 Region 要和您建立 OSS 桶 指定的區域相同,纔可以正常工做,目的是避免轉換時帶來跨 OSS Region 訪問的流量費用。
本文基於 「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>
環境準備好後,能夠參考以下 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 目錄下的文件。
轉換成功後,能夠基於部署的前端預覽引擎實現預覽功能,技術介紹請參考 預覽原理。以下圖所示,在 yourid-dev-imm
桶(華東2---上海區域)中添加了preview目錄
,它包含了預覽引擎的文件。
部署預覽引擎後,前端就能夠經過訪問預覽引擎所在 OSS 桶的域名,實現預覽功能。基於上述章節介紹,能夠經過 https://yourid-dev-imm.oss-cn-shanghai.aliyuncs.com/preview/index.html
路徑訪問渲染引擎。
注意:實際使用時請把 yourid-dev-imm
更換爲您的桶。
爲了快速體驗預覽引擎的效果,咱們簡化 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 ®ion=oss-cn-shanghai &bucket=yourid-dev-imm
其中 ?
前面部分爲訪問渲染引擎的路徑,而 url=xxx
爲轉換文檔的目標地址(注意:在 output
後無需加上 /
,渲染引擎會自動處理), region=oss-cn-shanghai
表示 OSS 桶所在區域,bucket=yourid-dev-imm
爲桶名。
注意:實際使用時,須要把 yourid-dev-imm
更換爲本身的桶。
設置桶爲私有,但讓渲染引擎 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 ®ion=oss-cn-shanghai &bucket=yourid-dev-imm &...
參考以下的文章,幫助您掌握相關背景: