# html-to-pdf
Sluzba prevadi HTML dokument na PDF. Prijme adresu dokumentu nebo HTML primo
v tele requestu a vrati soubor PDF. Je navrzena pro dokumenty o stovkach az
tisicich stranek.
Bezi v AppFactory na `https://services.csbot.cz/apps/html-to-pdf`.
## Jak to funguje
Dva render enginy:
- **WeasyPrint** je vychozi. Ma spravne CSS Paged Media, tedy countery stranek,
opakovane hlavicky tabulek a zalozky. Nizka pametova narocnost. Nespousti
JavaScript.
- **Chromium** pres Playwright zvladne i dokumenty dokreslovane JavaScriptem.
Nema pouzitelne countery stranek, cisla se proto dopisuji do hotoveho PDF.
Velke dokumenty se renderuji po castech a vysledky se slucuji. Cisla stranek
a obsah se dopocitavaji dvoupruchodovym renderem, aby po slouceni sedely.
## Spusteni
```bash
docker build -t html-to-pdf .
docker run --rm -p 8000:8000 html-to-pdf
```
## Priklad volani
Maly dokument synchronne:
```bash
curl -X POST http://localhost:8000/convert \
-H "Content-Type: application/json" \
-d '{"source": {"url": "https://example.com/dokument.html"}}' \
--output dokument.pdf
```
Velky dokument asynchronne:
```bash
# zarazeni do fronty
curl -X POST http://localhost:8000/jobs \
-H "Content-Type: application/json" \
-d '{
"source": {"url": "https://example.com/velky.html"},
"page_numbers": {"enabled": true},
"toc": {"enabled": true}
}'
# stav
curl http://localhost:8000/jobs/
# stazeni
curl http://localhost:8000/jobs//result --output velky.pdf
```
## Dokumentace
Podrobnosti jsou ve slozce [documentation](documentation/README.md):
- [api.md](documentation/api.md) endpointy a telo requestu
- [architektura.md](documentation/architektura.md) jak sluzba funguje uvnitr
- [konfigurace.md](documentation/konfigurace.md) environment variables
- [provoz.md](documentation/provoz.md) nasazeni a znama omezeni
- [zmeny.md](documentation/zmeny.md) zaznam zmen
Interaktivni dokumentace API je na `/docs`.