> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Pandoc 匯入與匯出

> 在 Kubernetes 部署中使用 Pandoc 匯入與匯出文件。

Pandoc 轉換與編譯一樣，由每個 Ayakaleaf Pro Pod 的 **clsi** 服務執行：clsi 會要求節點的 Docker Engine 從 `PANDOC_IMAGE` 啟動容器。**web** 服務則負責顯示匯入與匯出選單。此功能的作用及映像檔的建置方式，請參閱 [Pandoc 匯入與匯出](https://ayakaleaf-pro.mintlify.site/zh-TW/on-premises/configuration/overleaf-toolkit/pandoc-import-and-export.md)。

| | |
| - | - |
| 服務 | web（選單與路由）、clsi（執行轉換），位於每個 Ayakaleaf Pro Pod 中 |
| 節點 | Docker Engine 與 `PANDOC_IMAGE`，位於每個可執行 Ayakaleaf Pro 的節點上 |
| 需求 | [沙箱編譯](https://ayakaleaf-pro.mintlify.site/zh-TW/on-premises/configuration/kubernetes/sandboxed-compiles.md) |
| 定期工作 | 無 |

### 設定

**1. 將映像檔放入每個節點的 Docker**

從 [ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro) 儲存庫的 `develop/pandoc` 資料夾建置一次映像檔，然後將其載入每個可執行 Ayakaleaf Pro 之節點的 Docker 中：

```bash theme={null}
docker build -t overleaf-pandoc:local develop/pandoc
docker save overleaf-pandoc:local | ssh node-1 sudo docker load    # repeat for every node
```

或者將其推送到節點可存取的映像檔登錄庫，並在每個節點上執行 `sudo docker pull`。與 TeX Live 映像檔相同，它必須位於 **Docker** 中，而不只是在 containerd 中。

**2. ConfigMap**

```yaml theme={null}
  ENABLE_PANDOC_CONVERSIONS: "true"
  PANDOC_IMAGE: overleaf-pandoc:local
```

web 與 clsi 都從同一個 ConfigMap 讀取 `ENABLE_PANDOC_CONVERSIONS`，因此在 Kubernetes 上兩者的設定不會不一致。

**3. 套用並重新啟動**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

### 多個副本

除了在每個節點上準備好映像檔之外，不需要額外設定：每個副本都在自己的節點上進行轉換。

### 在 Kubernetes 上的測試

使用從 `develop/pandoc` 建置、並以 `docker save | docker load` 載入每個節點 Docker 的映像檔，在 Kubernetes 1.37 上以一個副本進行測試，Pandoc 的端對端測試全數通過（6 個案例）：將 Markdown 文件匯入為 LaTeX 專案、損毀的 Word 文件所顯示的錯誤、匯出 Word（可再次匯入）、Markdown 與 HTML，以及未設定 `ENABLE_PANDOC_CONVERSIONS` 時選單會被隱藏。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.