> 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-no/konfigurasjon/overleaf-toolkit/pandoc-import-and-export.md).

# Pandoc-import og eksport

### Pandoc import / eksport

Overleaf kan konvertere dokumenter til og fra LaTeX ved å bruke [Pandoc](https://pandoc.org/). Konverteringen kjøres inni en **sandkasseisolert Docker-container** administrert av `clsi` tjenesten, så funksjonen er avslått som standard og må slås på med et par miljøvariabler.

#### Hva det gjør

| Retning     | Fra → Til                 | Formater                   | Hvor                                                                                                       |
| ----------- | ------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------- |
| **Import**  | dokument → LaTeX-prosjekt | `docx`, `markdown`         | *Nytt prosjekt → Import* (laster opp en `.docx` / `.md` og gjør det om til et redigerbart `.tex` prosjekt) |
| **Eksport** | LaTeX-prosjekt → dokument | `docx`, `markdown`, `html` | *Meny → Last ned / Eksporter* (renderer prosjektet gjennom Pandoc)                                         |

***

### Miljøvariabler

Det er **to** variabler som er viktige, og én som ligner, men som gjør **ikke**.

1\. `ENABLE_PANDOC_CONVERSIONS` — hovedbryteren

```bash
ENABLE_PANDOC_CONVERSIONS=true
```

* Type: boolsk (`true` aktiverer den; alt annet deaktiverer den).
* **Må settes i BÅDE `web` og `clsi` tjenestene.** De er separate prosesser med separat konfigurasjon:
  * `web` leser det inn i `enablePandocConversions` (`services/web/config/settings.defaults.js`). Den styrer import-rutene, eksport-rutene og `ol-ExposedSettings.enablePandocConversions` flagget som forteller frontenden om Import/Eksport-UI skal vises.
  * `clsi` leser det inn i `enablePandocConversions` (`services/clsi/config/settings.defaults.cjs`). Den styrer endepunktene som kjører Pandoc.
* Hvis den er aktivert i `web` men ikke i `clsi` (eller omvendt), vil UI-et vises, men konverteringen vil mislykkes — hold dem synkroniserte.

2\. `PANDOC_IMAGE` — container-imaget clsi kjører for å konvertere

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

### Forutsetninger

Fordi konverteringer kjøres som Docker-containere opprettet av `clsi`:

1. **`clsi` må kjøre i sandkassemodus med Docker-tilgang.** I utvikleroppsettet `clsi` har allerede `SANDBOXED_COMPILES=true` og vertens Docker-sokkel (`/var/run/docker.sock`)
2. **Den `PANDOC_IMAGE` må være til stede** på den Docker-verten (hentet eller bygget lokalt) før den første konverteringen.

***

### Hurtigoppsett

Utvikleroppsettet (`develop/dev.env`) leveres allerede med:

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

Siden det offisielle imaget er privat, bygg den innebygde **én gang** før du bruker funksjonen:

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

Start så opp stakken på nytt slik at `clsi` og `web` den tar opp variablene.

***

### Bygging av Pandoc-imaget

Et standard Pandoc-image fungerer fordi clsi kaller Pandoc generisk (ingen egendefinerte maler/filtre). Det trenger bare tre essensielle ting ved kjøring, og alt håndteres av `develop/pandoc/Dockerfile`:

```dockerfile
# Egendefinert Pandoc-image for sandkasseisolerte konverteringer i clsi
# (import/eksport: docx / markdown / html, via ENABLE_PANDOC_CONVERSIONS).
#
# Hvorfor dette finnes:
#   Det offisielle quay.io/sharelatex/pandoc:3.9-imaget er privat (401, kan ikke hentes).
#   clsi kaller pandoc generisk (ingen egendefinerte maler/filtre/reference-doc), så et
#   standard pandoc-image fungerer — det trenger bare tre ting ved kjøring som clsi forutsetter:
#
#   1. Ingen `pandoc` ENTRYPOINT — clsi kjører Cmd ["pandoc", ...]; med standard
#      entrypoint ville det blitt `pandoc pandoc ...`.
#   2. `zip` — importkonverteringens andre steg kjører `zip -r` for å pakke outputen.
#   3. Brukere som samsvarer med hvordan clsi kjører konverteringscontaineren (User=$TEXLIVE_IMAGE_USER):
#        - `tex` med UID 1000 — standard for dev / mikrotjenester.
#        - `www-data` med UID 33 — sandkasseisolerte *søsken*-containere i Server Pro setter
#          TEXLIVE_IMAGE_USER=www-data (se /etc/overleaf/env.sh). clsi (som kjører som
#          www-data) oppretter konverteringsmappen eid av 33:33, så containeren må kjøre
#          som www-data(33) for å kunne skrive i den — ellers feiler pandoc med enten
#          "unable to find user www-data" eller "permission denied".
#      Alpine leverer allerede en `www-data`-gruppe med GID 82, så vi flytter den til GID 33 for å
#      matche verten/texlive-imaget.
#
# Bygg (taggen må samsvare med PANDOC_IMAGE i develop/dev.env):
#   docker build -t overleaf-pandoc:local develop/pandoc
#
# Merk: festet til `latest` (pandoc 3.10 da dette ble skrevet). Fest til en bestemt
# pandoc/core-tag for helt reproduserbare bygg.
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
```

Bygg og merk det slik at taggen samsvarer `PANDOC_IMAGE`:

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

For produksjon, fest `pandoc/core` til en spesifikk versjon i stedet for `latest` for reproduserbare bygg, og sett `PANDOC_IMAGE` til registry-stien din.

***

### Feilsøking

| Symptom                                                  | Sannsynlig årsak                                                                                |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Import-/eksportknappene vises ikke                       | `ENABLE_PANDOC_CONVERSIONS` ikke `true` på **web**                                              |
| UI-et vises, men konverteringen feiler med en serverfeil | `ENABLE_PANDOC_CONVERSIONS` ikke satt i **clsi**, eller `PANDOC_IMAGE` mangler på Docker-verten |
| `clsi` feil ved henting av imaget (401)                  | `PANDOC_IMAGE` peker fortsatt på den private standarden; bygg/pek til ditt eget image           |
| Containeren kjører `pandoc pandoc …` / feil argumenter   | Imaget har en `pandoc` `ENTRYPOINT`; bruk `ENTRYPOINT []`                                       |
| Importoutputen er tom / zip-trinnet feiler               | `zip` er ikke installert i imaget                                                               |
| Tillatelsesfeil på konverterte filer                     | Imaget har ingen `tex` bruker med 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-no/konfigurasjon/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.
