> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/on-premises/on-premises-cs/konfigurace/overleaf-toolkit/pandoc-import-and-export.md).

# Import a export Pandocu

### Import / export s Pandocem

Overleaf umí převádět dokumenty do a z LaTeXu pomocí [Pandocu](https://pandoc.org/). Konverze běží uvnitř **sandboxovaného Docker kontejneru** spravovaného `clsi` službou, takže je tato funkce ve výchozím stavu vypnutá a je nutné ji zapnout pomocí několika proměnných prostředí.

#### Co dělá

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

***

### Proměnné prostředí

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

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

```bash
ENABLE_PANDOC_CONVERSIONS=true
```

* Typ: boolean (`true` ji povolí; cokoli jiného ji vypne).
* **Musí být nastaveno 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í trasy, exportní trasy a `ol-ExposedSettings.enablePandocConversions` příznaku, který frontendu říká, zda má zobrazit UI Import/Export.
  * `clsi` načítá ji do `enablePandocConversions` (`services/clsi/config/settings.defaults.cjs`). Řídí endpointy, které spouštějí Pandoc.
* Pokud je povolena na `web` ale ne na `clsi` (nebo naopak), UI se zobrazí, ale konverze 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 konverze běží jako Docker kontejnery spouš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 hostitelského 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í konverzí.

***

### 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é stack (znovu) spusťte, aby `clsi` a `web` načetl proměnné.

***

### Sestavení obrazu Pandocu

Standardní obraz Pandocu funguje, protože clsi volá Pandoc obecně (bez vlastních šablon/filtrů). Potřebuje jen tři runtime nezbytnosti, o které se stará `develop/pandoc/Dockerfile`:

```dockerfile
# Vlastní obraz Pandocu pro sandboxované konverze 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 náležitosti, 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í konverze spouští `zip -r` pro zabalení výstupu.
#   3. Uživatelé odpovídající tomu, jak clsi spouští konverzní kontejner (User=$TEXLIVE_IMAGE_USER):
#        - `tex` s UID 1000 — výchozí pro vývoj / mikroslužby.
#        - `www-data` s UID 33 — sandboxované *sibling* kontejnery Server Pro nastavují
#          TEXLIVE_IMAGE_USER=www-data (viz /etc/overleaf/env.sh). clsi (běžící jako
#          www-data) vytváří konverzní adresář vlastněný 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 už standardně obsahuje skupinu `www-data` s GID 82, takže ji přesuneme na GID 33, aby
#      odpovídala hostiteli/obrazu texlive.
#
# 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 jej 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 ve vašem registru.

***

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

| Příznak                                                | Pravděpodobná příčina                                                                                  |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
| Tlačítka Import/Export se nezobrazují                  | `ENABLE_PANDOC_CONVERSIONS` ne `true` na **web**                                                       |
| UI se zobrazí, ale konverze selže s chybou serveru     | `ENABLE_PANDOC_CONVERSIONS` není nastaveno 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í hodnotu; sestavte/nasměrujte na vlastní obraz         |
| Kontejner běží `pandoc pandoc …` / nesprávné argumenty | Obraz má `pandoc` `ENTRYPOINT`; použijte `ENTRYPOINT []`                                               |
| Výstup importu je prázdný / krok zip selže             | `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://ayakaleaf-pro.ayaka.space/on-premises/on-premises-cs/konfigurace/overleaf-toolkit/pandoc-import-and-export.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.
