> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ファイルのプレビューの作成

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

export const MultiRelatedLinks = ({sections = []}) => {
  if (!sections || sections.length === 0) {
    return null;
  }
  return <div className="space-y-8">
      {sections.map((section, index) => <RelatedLinks key={index} title={section.title} items={section.items} />)}
    </div>;
};

export const RelatedLinks = ({title, items = []}) => {
  const getBadgeClass = badge => {
    if (!badge) return "badge-default";
    const badgeType = badge.toLowerCase().replace(/\s+/g, "-");
    return `badge-${badge === "ガイド" ? "guide" : badgeType}`;
  };
  if (!items || items.length === 0) {
    return null;
  }
  return <div className="my-8">
      {}
      <h3 className="text-sm font-bold uppercase tracking-wider mb-4">{title}</h3>

      {}
      <div className="flex flex-col gap-3">
        {items.map((item, index) => <a key={index} href={item.href} className="py-2 px-3 rounded related_link hover:bg-[#f2f2f2] dark:hover:bg-[#111827] flex items-center gap-3 group no-underline hover:no-underline border-b-0">
            {}
            <span className={`px-2 py-1 rounded-full text-xs font-semibold uppercase tracking-wide flex-shrink-0 ${getBadgeClass(item.badge)}`}>
              {item.badge}
            </span>

            {}
            <span className="text-base">{item.label}</span>
          </a>)}
      </div>
    </div>;
};

<RelatedLinks
  title="必須のガイド"
  items={[
{ label: translate("Setup"), href: "/guides/embed/box-view/setup", badge: "GUIDE" },
{ label: translate("Upload Files"), href: "/guides/embed/box-view/upload-file", badge: "GUIDE" },
{ label: translate("Installation"), href: "/guides/embed/ui-elements/installation", badge: "GUIDE" },
{ label: translate("Content Preview"), href: "/guides/embed/ui-elements/preview", badge: "GUIDE" }
]}
/>

ファイルはアプリケーションにアップロードされると、以下の2つの方法でプレビューすることができます。

* 直接埋め込み: カスタムの埋め込みリンクを使用した標準のHTML `<iframe>`コンポーネント。
* カスタマイズされたプレビューアー: Box <Link href="/guides/embed/ui-elements">UI Elements</Link>を使用して全面的にカスタマイズされたプレビューウィジェット。

## 直接埋め込み (`iframe`)

直接埋め込みリンクを使用すると、アプリケーションでのプレビューをカスタマイズするためのオプションが制限されます。このメソッドは軽量であるため、このAPIには、ドキュメントでのスクロール、動画のインタラクティブな再生や一時停止、画像の回転など、クライアント側の処理に対応するオプションはありません。

Box Viewの直接`<iframe>`埋め込みを作成するには、以下の2つの手順を実行します。

1. ファイル用に埋め込みURLを生成する
2. 生成した埋め込みURLを`<iframe>`に追加する

### ファイル用に埋め込みURLを生成する

アプリケーションにアップロードされたファイルの公開ファイルプレビューURLを作成するには、直接のSDKメソッドを使用するか、APIに直接リクエストを発行します。

<Note>
  埋め込みURLをAPIから直接生成する場合は、<Link href="/reference/get-files-id">ファイル情報の取得エンドポイント</Link>を使用して、`fields`パラメータを介して`expiring_embed_link`をリクエストします。
</Note>

<CodeGroup>
  ```sh cURL theme={null}
  curl https://api.box.com/2.0/files/FILE_ID?fields=expiring_embed_link \
      -H "authorization: Bearer [ACCESS_TOKEN]"
  ```

  ```csharp .NET theme={null}
  String fileId = "12345678";
  Uri embedUri = await client.FilesManager.GetPreviewLinkAsync(id: fileId);
  ```

  ```java Java theme={null}
  String fileID = "12345678";
  BoxFile file = new BoxFile(api, fileID);
  URL embedLink = file.getPreviewLink();
  ```

  ```python Python theme={null}
  file_id = '12345678'
  embed_url = client.file(file_id).get_embed_url()
  ```

  ```js Node theme={null}
  const fileId = '12345678';
  client.files.getEmbedLink(fileId).then(embedURL => {
      // ...
  });
  ```
</CodeGroup>

レスポンスオブジェクト内では、公開埋め込みURLが次のようになります。

```shell theme={null}
https://app.box.com/preview/expiring_embed/gvoct6FE!YT_X1LauQ8ulDTad96hTl9xLCRYJ
5iU6O61KxiduxFIgX9HSWMcCWf7zju1XkEsf6-Ul2qtKXeaFeKPT4SysQJQdxrc144KgTIBuoI3bWMf4
cfhp3jdLYrK5hnr6KMq5H6r-AW31AcFtDJi1lnT0M4b3bvvZUaE2RRJGGINMauvS6MAT2luae5PvbFSx
Ctqqx6XlN6QrqbhfJc0UeJF9qwMv3-O8q5fWn0qr8OTY4lkeYidtTs3Ux...
```

<Warning>
  セキュリティ上の理由により、生成された埋め込みリンクは1分後に期限切れになるため、生成されたらすぐにアプリに埋め込む必要があります。
</Warning>

### 生成した埋め込みURLを`<iframe>`に追加する

アプリケーションのHTML内で、`iframe`要素を作成し、`src`属性を生成された埋め込みURLに設定します。

```html theme={null}
<iframe src="https://app.box.com/preview/expiring_embed/gvoct6FE!ixgtCKQAziW
  9tHPm-jueq4cmS4GnL9RTJRcVEsK_3W8xcxtVo_v6gKpoXY45odgG1QrcjBVYZMrriUyGvcoSM
  SX8s-smpaFFYQik0R-PCKFtwvbv0lonid6ZfYNbuNFl2j9hOIqBccvHrdVor7i6WvOm6zELzTY
  4EWshcyYYBhDbJmYMrq61RtU_kvBe5P..."></iframe>
```

## カスタマイズされたプレビューアー (UI Element)

高度なプレビューのカスタマイズ機能やイベント処理機能を活用するには、Box <Link href="/guides/embed/ui-elements/preview">UI Preview Element</Link>を使用します。

このプレビューElementを設定するには、まず、必須コンポーネントをインストールします。

<Card href={localizeLink("/guides/embed/ui-elements/installation")} arrow title="Box Elementsとプレビューのインストール" />

新しいプレビューアーを表示するためのJavaScriptコードを追加する際、基本的なコードは次のようになります。

```js theme={null}
var preview = new Box.Preview();
preview.show("FILE_ID", "ACCESS_TOKEN", {
    container: ".preview-container",
    showDownload: true
});
```

コードサンプル内のプレースホルダを以下の内容に置き換えてください。

* `FILE_ID`: アプリケーションにアップロードされたファイルのID。ファイルのアップロード時に返されるオブジェクトから取得できます。
* `ACCESS_TOKEN`: アプリケーションの構成時に設定されたプライマリアクセストークン、またはそのトークンのダウンスコープされたバージョン。

<Warning>
  プライマリアクセストークンの高度な権限により、JavaScriptコードでは、ダウンスコープされたバージョンのトークンを使用することを強くお勧めします。<Link href="/guides/embed/box-view/best-practices#use-downscoped-tokens">ダウンスコープのベストプラクティス</Link>を参照してください。
</Warning>

<RelatedLinks
  title="関連するガイド"
  items={[
{ label: translate("Create File Preview"), href: "/guides/embed/box-view/create-preview", badge: "GUIDE" }
]}
/>
