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

# Pandoc-import og -eksport

### Pandoc-import / eksport

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

#### Hva den 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* (gjengir prosjektet gjennom Pandoc)                                          |

***

### Miljøvariabler

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

1\. `ENABLE_PANDOC_CONVERSIONS` — hovedbryteren

```bash
ENABLE_PANDOC_CONVERSIONS=true
```

* Type: boolsk (`true` aktiverer det; alt annet deaktiverer det).
* **Må settes på BEGGE `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 importrutene, eksportrutene og `ol-ExposedSettings.enablePandocConversions` flagget som forteller frontend om den skal vise Import/Export-grensesnittet.
  * `clsi` leser det inn i `enablePandocConversions` (`services/clsi/config/settings.defaults.cjs`). Den styrer endepunktene som kjører Pandoc.
* Hvis det er aktivert på `web` men ikke på `clsi` (eller omvendt), vil UI-et vises, men konverteringen vil feile — hold dem synkronisert.

2\. `PANDOC_IMAGE` — containeravbildningen clsi kjører for å konvertere

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

### Forutsetninger

Siden konverteringer kjøres som Docker-containere startet av `clsi`:

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

***

### Hurtigoppsett

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

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

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

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

Deretter (re)start stakken slik at `clsi` og `web` den plukker opp variablene.

***

### Bygging av Pandoc-imaget

En standard Pandoc-avbildning fungerer fordi clsi kaller Pandoc generisk (ingen egendefinerte maler/filtre). Den trenger bare tre kjøretidsforutsetninger, alt håndtert av `develop/pandoc/Dockerfile`:

```dockerfile
# Egendefinert Pandoc-avbildning for clsi sine sandkassekjørte konverteringer
# (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å en
#   standard pandoc-avbildning fungerer — den trenger bare tre kjøretidskrav 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 utdataene.
#   3. Brukere som samsvarer med hvordan clsi kjører konverteringscontaineren (User=$TEXLIVE_IMAGE_USER):
#        - `tex` med UID 1000 — dev / mikrotjenester er standard.
#        - `www-data` med UID 33 — Server Pro sandkassekjørte *søsken*-containere setter
#          TEXLIVE_IMAGE_USER=www-data (se /etc/overleaf/env.sh). clsi (kjører som
#          www-data) oppretter konverteringsmappen eid av 33:33, så containeren må kjøre
#          som www-data(33) for å 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 å
#      samsvare med verten/texlive-imaget.
#
# Bygg (taggen må samsvare med PANDOC_IMAGE i develop/dev.env):
#   docker build -t overleaf-pandoc:local develop/pandoc
#
# Merk: låst til `latest` (pandoc 3.10 på tidspunktet dette skrives). Lås til en spesifikk
# pandoc/core-tag for fullstendig 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 den slik at taggen samsvarer `PANDOC_IMAGE`:

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

For produksjon, lås `pandoc/core` til en spesifikk versjon i stedet for `latest` for reproduserbare bygg, og sett `PANDOC_IMAGE` til registerstien din.

***

### Feilsøking

| Symptom                                                  | Sannsynlig årsak                                                                                 |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| Import/Export-knappene vises ikke                        | `ENABLE_PANDOC_CONVERSIONS` ikke `true` på **web**                                               |
| UI-et vises, men konverteringen feiler med en serverfeil | `ENABLE_PANDOC_CONVERSIONS` ikke satt på **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 på ditt eget image             |
| Containeren kjører `pandoc pandoc …` / feil argumenter   | Imaget har en `pandoc` `ENTRYPOINT`; bruk `ENTRYPOINT []`                                        |
| Importutdata er tom / zip-steget 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://overleaf-pro.ayaka.space/on-premises/on-premises-no/konfigurasjon/overleaf-toolkit/pandoc-import-og-eksport.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.
