Files
html-to-pdf/documentation/konfigurace.md
T
JiriUhlirandClaude Opus 5 156289fe2d Implementace prevodu HTML na PDF
Sluzba prijme adresu HTML dokumentu nebo HTML v tele requestu a vrati PDF.
Navrzena pro dokumenty o stovkach az tisicich stranek.

Rendering:
- WeasyPrint jako vychozi engine, spravne CSS Paged Media, nizka pametova
  narocnost, bez JavaScriptu
- Chromium pres Playwright pro dokumenty dokreslovane skripty
- rezim auto s detekci skriptu a fallbackem pri selhani WeasyPrintu

Velke dokumenty:
- deleni na casti na strukturalnich hranicich, rez nikdy uvnitr tabulky
  nebo odstavce
- dvoupruchodovy render obsahu se skutecnymi cisly stranek, pozice nadpisu
  se ctou z kotev hlasenych u kazde stranky
- cislovani stranek bud pres CSS countery, nebo pres cislovaci vrstvu
  nastampovanou na hotove PDF, rozmer stranky se cte z vysledneho souboru
- Chromium se restartuje po N jobech, nikdy vsak behem beziciho renderu

API:
- POST /convert synchronne, POST /jobs asynchronne se sledovanim stavu,
  stahovanim vysledku, rusenim a volitelnym callbackem
- GET /health s overenim dostupnosti obou enginu a stavem fronty
- OpenAPI respektuje prefix reverse proxy pres root_path

Bezpecnost a provoz:
- SSRF kontrola po DNS resolvu, na kazdem presmerovani a u vsech pozadavku
  prohlizece
- nedostupne assety render nezastavi, ale hlasi se v odpovedi i v logu
- fronta s omezenym poctem workeru, rozpracovane joby se pri ukonceni
  oznaci jako failed, nezmizi potichu
- strukturovane JSON logovani s job_id
- vsechny limity vypnute ve vychozim stavu

Dockerfile je dvoufazovy, obsahuje zavislosti WeasyPrintu, Chromium
a fonty s ceskou diakritikou.

Autentizace zamerne neni implementovana, zpusob predavani neni domluveny.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 14:50:10 +02:00

2.6 KiB

Konfigurace

Vsechno se cte z environment variables. AppFactory je predava pres vygenerovany runtime .env. Zadna promenna neni povinna, sluzba nastartuje i bez nich.

Aplikace

Promenna Vychozi Vyznam
APP_NAME html-to-pdf nazev v dokumentaci a v odpovedi /version
APP_VERSION 1.0.0 verze
ROOT_PATH prazdne prefix reverse proxy, napriklad /apps/html-to-pdf
BASE_PATH prazdne pouzije se, kdyz ROOT_PATH neni nastavene
LOG_LEVEL INFO uroven logovani

Fronta a joby

Promenna Vychozi Vyznam
WORKERS 2 pocet soubezne bezicich konverzi
QUEUE_MAX_SIZE 100 kapacita fronty, pri prekroceni se vraci 503
SYNC_TIMEOUT_SECONDS 60 limit pro POST /convert
JOB_RESULT_TTL_SECONDS 3600 jak dlouho je vysledek k dispozici ke stazeni
STORAGE_DIR /tmp/html-to-pdf adresar pro docasne soubory

Enginy

Promenna Vychozi Vyznam
DEFAULT_ENGINE auto engine pouzity, kdyz ho request neuvede
CHROMIUM_ENABLED true vypnuti Chromia usetri pamet, ale ztrati podporu JavaScriptu
CHROMIUM_RESTART_AFTER_JOBS 50 po kolika jobech se prohlizec restartuje

Sit

Promenna Vychozi Vyznam
FETCH_TIMEOUT_SECONDS 30 timeout stazeni zdrojoveho dokumentu
ASSET_TIMEOUT_SECONDS 10 vychozi timeout stazeni jednoho assetu
MAX_REDIRECTS 5 maximalni pocet presmerovani

SSRF ochrana

Promenna Vychozi Vyznam
SSRF_BLOCK_PRIVATE true blokovat loopback, privatni a rezervovane rozsahy
SSRF_EXTRA_BLOCKED_CIDRS prazdne dalsi blokovane rozsahy, oddelene carkou
SSRF_ALLOWED_HOSTS prazdne hostnames, ktere kontrolou neprochazi

SSRF_ALLOWED_HOSTS je urcene pro vyjimky typu interniho generatoru HTML ve stejne siti. Kazdy zaznam obchazi celou kontrolu, pouzivat opatrne.

Vypnuti SSRF_BLOCK_PRIVATE otevre sluzbe cestu do cele vnitrni site. Delat jen tam, kde to ma duvod.

Limity

Vsechny limity jsou ve vychozim stavu vypnute. Nula znamena bez limitu. Pri prekroceni se vraci explicitni chyba limit_exceeded, dokument se nikdy tise neorezava.

Promenna Vychozi Vyznam
MAX_PAGES 0 maximalni pocet stranek vysledku
MAX_HTML_BYTES 0 maximalni velikost zdrojoveho HTML
MAX_RENDER_SECONDS 0 maximalni doba jednoho renderu

Callback

Promenna Vychozi Vyznam
CALLBACK_TIMEOUT_SECONDS 15 timeout jednoho pokusu
CALLBACK_RETRIES 3 pocet pokusu o doruceni