> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/on-premises-cs/konfigurace/overleaf-toolkit/import-a-export-pandocu.md).

# Import a export Pandocu

### Import / export s Pandocem

Overleaf dokáže převádět dokumenty do a z LaTeXu pomocí [Pandoc](https://pandoc.org/). Převod probíhá uvnitř **sandboxovaného kontejneru Docker** spravovaného `clsi` službou, takže je tato funkce ve výchozím nastavení vypnutá a musí se zapnout několika proměnnými prostředí.

#### Co dělá

| Směr       | Z → Do                      | Formáty                    | Kde                                                                                           |
| ---------- | --------------------------- | -------------------------- | --------------------------------------------------------------------------------------------- |
| **Import** | dokument → LaTeXový projekt | `docx`, `markdown`         | *Nový projekt → Import* (nahraje `.docx` / `.md` a přemění jej na upravitelný `.tex` projekt) |
| **Export** | LaTeXový projekt → dokument | `docx`, `markdown`, `html` | *Menu → Stáhnout / Export* (vykreslí projekt přes Pandoc)                                     |

***

### Proměnné prostředí

Existují **dvě** proměnné, které jsou důležité, a jedna podobná, která ne **ne**.

1\. `ENABLE_PANDOC_CONVERSIONS` — hlavní přepínač

```bash
ENABLE_PANDOC_CONVERSIONS=true
```

* Typ: logická hodnota (`true` zapne ji; cokoliv jiného ji vypne).
* **Musí být nastavena NA OBOU `web` a `clsi` službách.** Jsou to samostatné procesy s oddělenou konfigurací:
  * `web` načítá ji do `enablePandocConversions` (`services/web/config/settings.defaults.js`). Řídí importní cesty, exportní cesty a `ol-ExposedSettings.enablePandocConversions` příznak, který frontendu říká, zda má zobrazit rozhraní Import/Export.
  * `clsi` načítá ji do `enablePandocConversions` (`services/clsi/config/settings.defaults.cjs`). Řídí koncové body, které spouštějí Pandoc.
* Pokud je povolena na `web` ale ne na `clsi` (nebo naopak), rozhraní se zobrazí, ale převod selže — udržujte je synchronizované.

2\. `PANDOC_IMAGE` — obraz kontejneru, který clsi spouští pro převod

```bash
PANDOC_IMAGE=your-repo/pandoc:3.9
```

### Předpoklady

Protože převody běží jako kontejnery Docker spuštěné `clsi`:

1. **`clsi` musí běžet v sandboxovaném režimu s přístupem k Dockeru.** Ve vývojovém stacku `clsi` už má `SANDBOXED_COMPILES=true` a socket hostitele Dockeru (`/var/run/docker.sock`) připojený.
2. **Pole `PANDOC_IMAGE` musí být přítomen** na daném hostiteli Dockeru (stažený nebo lokálně sestavený) před prvním převodem.

***

### Rychlé nastavení

Vývojový stack (`develop/dev.env`) už obsahuje:

```bash
ENABLE_PANDOC_CONVERSIONS=true
PANDOC_IMAGE=overleaf-pandoc:local
```

Protože oficiální obraz je privátní, sestavte přibalený **jednou** před použitím této funkce:

```bash
docker build -t overleaf-pandoc:local develop/pandoc
```

Poté znovu spusťte stack, aby `clsi` a `web` převzal proměnné.

***

### Sestavení obrazu Pandoc

Standardní obraz Pandocu funguje, protože clsi volá Pandoc obecně (bez vlastních šablon/filtrů). Potřebuje jen tři základní runtime součásti, vše zajišťuje `develop/pandoc/Dockerfile`:

```dockerfile
# Vlastní obraz Pandocu pro sandboxované převody v clsi
# (import/export: docx / markdown / html, přes ENABLE_PANDOC_CONVERSIONS).
#
# Proč to existuje:
#   Oficiální obraz quay.io/sharelatex/pandoc:3.9 je privátní (401, nelze stáhnout).
#   clsi volá pandoc obecně (bez vlastních šablon/filtrů/reference-doc), takže
#   standardní obraz pandocu funguje — potřebuje jen tři runtime nezbytnosti, které clsi předpokládá:
#
#   1. Žádný `pandoc` ENTRYPOINT — clsi spouští Cmd ["pandoc", ...]; s výchozím
#      entrypointem by to bylo `pandoc pandoc ...`.
#   2. `zip` — druhý krok importního převodu spouští `zip -r` pro zabalení výstupu.
#   3. Uživatelé odpovídající tomu, jak clsi spouští kontejner pro převod (User=$TEXLIVE_IMAGE_USER):
#        - `tex` s UID 1000 — výchozí pro dev / microservices.
#        - `www-data` s UID 33 — sandboxované *sourozenecké* kontejnery Server Pro nastavují
#          TEXLIVE_IMAGE_USER=www-data (viz /etc/overleaf/env.sh). clsi (běžící jako
#          www-data) vytvoří adresář pro převod s vlastníkem 33:33, takže kontejner musí běžet
#          jako www-data(33), aby do něj mohl zapisovat — jinak pandoc selže buď s
#          "unable to find user www-data" nebo "permission denied".
#      Alpine již obsahuje skupinu `www-data` s GID 82, takže ji přesuneme na GID 33, aby
#      odpovídala hostu/texlive obrazu.
#
# Sestavení (tag musí odpovídat PANDOC_IMAGE v develop/dev.env):
#   docker build -t overleaf-pandoc:local develop/pandoc
#
# Poznámka: připnuto na `latest` (v době psaní pandoc 3.10). Připněte na konkrétní
# tag pandoc/core pro plně reprodukovatelné sestavení.
FROM pandoc/core:latest

ENTRYPOINT []

RUN apk add --no-cache zip \
 && adduser -D -u 1000 tex \
 && (delgroup www-data 2>/dev/null || true) \
 && addgroup -g 33 www-data \
 && adduser -D -u 33 -G www-data www-data
```

Sestavte a označte to tagem tak, aby tag odpovídal `PANDOC_IMAGE`:

```bash
docker build -t overleaf-pandoc:local develop/pandoc
```

Pro produkci připněte `pandoc/core` na konkrétní verzi místo `latest` pro reprodukovatelné sestavení, a nastavte `PANDOC_IMAGE` na cestu vašeho registru.

***

### Řešení problémů

| Příznak                                                | Pravděpodobná příčina                                                                               |
| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| Tlačítka Import/Export se nezobrazují                  | `ENABLE_PANDOC_CONVERSIONS` ne `true` na **web**                                                    |
| Rozhraní se zobrazí, ale převod selže s chybou serveru | `ENABLE_PANDOC_CONVERSIONS` nenastaveno na **clsi**, nebo `PANDOC_IMAGE` chybí na hostiteli Dockeru |
| `clsi` chyba při stahování obrazu (401)                | `PANDOC_IMAGE` stále ukazuje na privátní výchozí; sestavte/nasměrujte na svůj vlastní obraz         |
| Kontejner běží `pandoc pandoc …` / špatné argumenty    | Obraz má `pandoc` `ENTRYPOINT`; použijte `ENTRYPOINT []`                                            |
| Výstup importu je prázdný / krok zip selhává           | `zip` není v obrazu nainstalován                                                                    |
| Chyby oprávnění u převedených souborů                  | Obraz nemá `tex` uživatele s UID 1000                                                               |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/on-premises-cs/konfigurace/overleaf-toolkit/import-a-export-pandocu.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
