# OxOffice Online 整合手冊 # 簡介 這份文件將協助您整合現有的雲端儲存方案,以便您的使用者可以透過 Web 瀏覽器編輯儲存在雲端硬碟中的文件。 因此,您必須將下列部份設定好,並且組合在一起: - [OxOffice Online 主機](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-oxoffice-online-%E4%B8%BB%E6%A9%9F) - [能開出 iframe 的頁面](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-%E9%96%8B%E5%87%BA%E7%B7%A8%E8%BC%AF-iframe-%E9%A0%81%E9%9D%A2%E7%9A%84%E7%B6%B2%E7%AB%99) - [使用者驗證](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-%E4%BD%BF%E7%94%A8%E8%80%85%E9%A9%97%E8%AD%89) - [連接雲端硬碟](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-%E9%80%A3%E6%8E%A5%E9%9B%B2%E7%AB%AF%E7%A1%AC%E7%A2%9F) 整合 OxOffice Online 最簡單的方法,就是使用 WOPI 協定。 OxOffice Online 實作了一個名為 WOPI(全名是:Web 應用程式開放平台介面)的協定。OxOffice Online 是 **WOPI 客戶端**,可以和 **WOPI 主機**(也就是您現有的雲端應用和儲存方案)整合在一起。WOPI 是一個開放協議,更多詳細資料,請造訪 [WOPI documentation](https://docs.microsoft.com/en-us/microsoft-365/cloud-storage-partner-program/rest/). # 如何整合 ### **OxOffice Online 主機** 儘管可以和 Web 伺服器安裝在同一臺主機,不過,我們建議將 OxOffice Online 安裝在專用的 VM 或伺服器。這部伺服器(WOPI 客戶端),必須能讓外部網際網路連線,而且還要能夠連線到您的 WOPI 伺服器(您的雲端應用系統)。 ### **開出編輯 iframe 頁面的網站** 我們假設您希望將編輯功能整合到現有網站中。 因此,在網站上,您需要提供一個 iframe,其中將顯示OxOffice Online 的編輯介面和文件本身。 要設定 iframe,WOPI 主機(您的雲端應用系統)需要從 WOPI 客戶端(OxOffice Online 伺服器)上定義的位置讀取 discovery XML。 位址如下:
https://<WOPI 客戶端 URL>:<port>/hosting/discovery |
https://<WOPI 主機 URL>/<...>/wopi/files/<file id> |
屬性 | 型別 (Data type) | 必要 Required | 說明 |
BaseFileName | string | yes | 不含路徑的檔案名稱,用來顯示在使用者的編輯畫面。 |
OwnerId | string | yes | 識別該檔案擁有者的唯一 ID |
Size | number (int64) | yes | 以 bytes 為單位的檔案大小,64 位元長整數。 |
UserId | string | yes | 存取該檔案的使用者 ID。 |
UserFriendlyName | string | no | 使用者名稱,用來顯示在使用者的編輯畫面。 |
UserCanWrite | boolean | no | 如果要能夠編輯,必須設為 true,預設為 false。 |
UserCanNotWriteRelative | boolean | no | 禁止使用者重新命名或另存新檔。預設 true。 |
PostMessageOrigin | string | no | 這是告訴 OxOffice Online。 [PostMessage API](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/postmessage-api) 的 WOPI 主機位址。若未指定,將無法接收 OxOffice Online 傳來的狀態。 |
HidePrintOption | boolean | no | 隱藏 OxOffice Online 的列印按鈕。但可透過 [PostMessage API](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/postmessage-api) 來實作 WOPI 主機自己的列印 UI。 |
DisablePrint | boolean | no | 禁止列印文件。此外,也會在 UI 中隱藏列印選項。 |
HideSaveOption | boolean | no | 隱藏 OxOffice Online 的存檔按鈕。但仍可透過 [PostMessage API](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/postmessage-api) 觸發,這並不會影響自動存檔功能。 |
HideExportOption | boolean | no | 隱藏 OxOffice Online「下載為…」 按鈕及選項,但仍可透過 [PostMessage API](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/postmessage-api) 觸發。 |
DisableInactiveMessages | boolean | no | 當停止編輯文件一段時間後,預設會在文件編輯區顯示提示文字。若禁用此功能,您監聽的 JavaScript,就必須在取得 Session\_Closed 或 User\_Idle 的 [PostMessage API](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/postmessage-api) 時,自行向使用者提供適當的訊息。 |
DisableExport | boolean | no | 禁止匯出或下載文件。此外,也會在 UI 中隱藏下載選項。 |
DisableCopy | boolean | no | 禁止複製內容到剪貼簿,但文件內部仍然可以複製以及貼上外部資料。 |
DownloadAsPostMessage | boolean | no | WOPI 主機自行接管下載任務,例如使用者觸發列印、權螢幕投影簡報以及其他檔案下載功能時,將觸發名為 Download\_As 的 [PostMessage API](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/postmessage-api),傳送的值中,包含以下 JSON: ```json { Type: 'print'|'slideshow'|'export', URL: '...實際下載的 URL...' } ``` |
EnableOwnerTermination | boolean | no | 授予檔案擁有者可以終止其他共編者編輯的權利,意即可在共編時,將其他共編者踢出共編行列。 |
LastModifiedTime | string | no | 檔案最後修改時間。使用 ISO8601 格式表示之 UTC 日期時間(YYYY-MM-DDThh:mm:ss.nnnnZ)。 |
UserExtraInfo | object | no | 使用者延伸資訊。請參考:[**UserExtraInfo Details**](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-userextrainfo-detail-0)。 |
屬性 | 型別 (Data type) | 必要 Required | 說明 |
avatar | string | no | 使用者頭像位址。 |
string | no | 使用者的電子郵件位址。 | |
ip | string | no | 使用者的 IP 位址。由於 OxOffice Online 可能透過 reverse proxy 轉址,所以自行抓取的 IP 可能不正確,此種狀況下,需透過您的應用程式,將使用者 IP 置於此屬性。 |
watermark | object | no | 自訂編輯浮水印。請參考[ **Watermark Details**](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-watermark-details%EF%BC%9A)。 |
屬性 | 型別 (Data type) | 必要 Required | 說明 |
editing | boolean | no | 編輯時啟用,預設為 false。 |
printing | boolean | no | 列印時啟用,預設為 false。 |
opacity | number(double) | no | 不透明度。範圍 0.01-1.00預設為 0.20。此值愈小愈透明。 |
familyname | string | no | 字型名稱。 |
angle | number(int) | no | 旋轉角度。範圍 0-360,預設為 45° |
color | string | no | CSS #rrggbb 表示之顏色。預設 #000000 |
bold | boolean | no | 粗體。預設為 false。 |
italic | boolean | no | 斜體。預設為 false。 |
outline | boolean | no | 空心字。預設為 false。 |
shadow | boolean | no | 陰影字。預設為 false。 |
text | string | no | 浮水印文字,若需多行,各行需以 \\n 分隔。 |
此外,**PutFile** 時,OxOffice Online 另外會帶入以下幾個標頭: `X-LOOL-WOPI-IsModifiedByUser` – 使用者是否在存檔之前修改了文件(true),或者他們只是按了存檔(false)卻沒有進行任何修改。 `X-LOOL-WOPI-IsAutosave` – 自動存檔(true)或使用者按了「存檔」(false)按鈕。 `X-LOOL-WOPI-IsExitSave` – 當所有編輯者(共編狀態)都結束編輯,或離線時,將觸發自動存檔,並且該標頭會被設成 true。
4. #### ****PutRelativeFile:另存新檔或更改檔名。****該 URL 被呼叫時,您的應用程式必須接收 WOPI 客戶端(OxOffice Online)傳來的檔案。 ``` POST https://