今回はBoxView APIを叩いてみます。

View APIとはPDFやOfficeドキュメントをHTMLに埋め込んで表示するためのAPIになります。

HTMLに埋め込むためにはPDFやOfficeドキュメントをHTMLにコンバートする必要があります。

 

ドキュメントのアップロード(&コンバート@バックエンド)

→ドキュメントを閲覧するためのセッション(有効期限)を作成

→発行されたセッションIDを使ってURLを生成し、iframe等で表示

というフローで実装することになります。

 

今回はApexでSalesforceの添付ファイルをコンバートし、外部公開用のURLを発行してみます。

参考URL→https://box-content.readme.io/docs/viewing-your-first-document

1. アプリケーションの作成

View API用のアプリケーションを作成します(Content APIとは別)

https://app.box.com/developers/services にアクセスして

「Boxアプリケーションの作成」をクリックします。

box-view-api-create-app

テキトーに入力して、アプリケーションを作成します。

box-view-api-create-app2

アプリケーションの詳細を開くと、View APIキーというのがあるのでコレをコピります。

box-view-api-app-info

2. ドキュメントのアップロード

アップロードにはファイルそのものをアップロードするスタイルと

外部公開されているURLを指定するスタイルの2種類があります。

今回はファイルそのものをアップロードしてみます。

ファイルそのものをアップロードする場合はContent-Type: multipart/form-dataで

送信する必要があります。

Apexからバイナリデータをmultipart/form-dataで送る方法は以下の記事を参照。

Apexからmultipart/form-data形式で送信してみる。

 

サンプルはこちら↓。Authorizationヘッダには1のView APIキーを入れてください。

curlだとこんな感じ

レスポンスはこんな感じ

PDF/OfficeドキュメントからHTMLへの変換はバックエンドで非同期で行われます。

そのため、送信直後はqueuedというステータスが返却されます。

ちなみに変換処理の完了通知手段としてwebhookを利用できるそうです(要申請)。

3. セッションの発行

アップロードされたドキュメントはそのままでは外部公開されないので

セッションを発行して外部公開できるようにします。

curlだとこんな感じ

Apexだとこんな感じ

レスポンスはこんな感じ

urls.viewの値が外部公開用のURLになります。

durationで指定した値が有効期限(minutes)になります。

PDF/OfficeドキュメントからHTMLへの変換処理が完了していない場合は

ステータスコード202が返却されます。

 

あとはurls.viewのURLを埋め込むなり通知するなりするだけでOKです。

box-view-api

?theme=light、?theme=darkのURLパラメータを付与することでビュワーのスタイルを変更できたりします。

box-view-api-theme-dark