Base URL je standardně https://pdf.cloud.good-agency.cz.
Pokud je nastavené HCPDF_BEARER_AUTH_SECRET_KEY, všechny endpointy vyžadují hlavičku:
Authorization: Bearer <token>| Metoda | Cesta | Popis |
|---|---|---|
GET |
/hc |
Healthcheck |
GET |
/ |
Vygeneruje PDF z URL |
POST |
/ |
Vygeneruje PDF z HTML |
GET |
/pdf_options |
Vrátí dostupné PDF presety |
GET |
/screenshot |
Vygeneruje PNG screenshot z URL |
POST |
/screenshot |
Vygeneruje PNG screenshot z HTML |
Jednoduchý healthcheck endpoint.
200 OK- tělo:
ok - hlavička:
X-Version: <verze aplikace>
curl https://pdf.cloud.good-agency.cz/hcVygeneruje PDF z cílové URL.
| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
url |
string |
ano | URL stránky, která se má vyrenderovat do PDF |
pdf_option |
string |
ne | Název PDF presetu; pokud chybí, použije se výchozí preset |
wait_for_ready |
string |
ne | Pokud je poslaný, server čeká na selektor html[data-pdf-ready="true"] |
- Pokud request obsahuje hlavičku
Cookie, server ji přepošle do cílové stránky. - Render čeká na
networkidle0. - Při
wait_for_readyje navíc timeout 30 sekund na objeveníhtml[data-pdf-ready="true"].
200 OKContent-Type: application/pdf
400 Bad Requestkdyž chybíurl500 Internal Server Errorpři chybě renderu nebo načtení stránky
curl "https://pdf.cloud.good-agency.cz/?url=https://example.com" -o output.pdfS presetem:
curl "https://pdf.cloud.good-agency.cz/?url=https://example.com&pdf_option=A4" -o output.pdfS čekáním na připravenost stránky:
curl "https://pdf.cloud.good-agency.cz/?url=https://example.com/invoice&wait_for_ready=1" -o output.pdfVygeneruje PDF přímo z poslaného HTML.
| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
html |
string |
ano | HTML dokument k vyrenderování |
pdf_option |
string |
ne | Název PDF presetu |
wait_for_ready |
boolean | string |
ne | Pokud je poslaný, server po načtení HTML čeká na ready selector |
ready_selector |
string |
ne | CSS selector, na který má server čekat; výchozí je html[data-pdf-ready="true"] |
base_url |
string |
ne | Base URL použitá pro relativní src a href v HTML |
Server má registrovaný @fastify/formbody, takže funguje application/x-www-form-urlencoded. Fastify zároveň umí i JSON body.
- HTML se načte přes
page.setContent(..., { waitUntil: 'domcontentloaded' }). - Server potom čeká na dokončení obrázků a fontů v dokumentu.
- Pokud je vyplněné
wait_for_ready, server navíc čeká na selector zready_selector. - Proxy nastavená pro Chromium se použije i pro assety načítané z HTML, například obrázky, CSS, fonty nebo iframe.
- Pokud
base_urlchybí, relativní cesty v HTML se nemusí vyhodnotit správně.
200 OKContent-Type: application/pdf
400 Bad Requestkdyž chybí body400 Bad Requestkdyž jehtmlprázdné500 Internal Server Errorpři chybě renderu
curl https://pdf.cloud.good-agency.cz/ \
-H 'Content-Type: application/json' \
-d '{"html":"<html><body><h1>Test</h1></body></html>","pdf_option":"A4"}' \
-o output.pdfcurl https://pdf.cloud.good-agency.cz/ \
-H 'Content-Type: application/json' \
-d '{"html":"<html data-pdf-ready=\"true\"><body><img src=\"/logo.png\"><h1>Test</h1></body></html>","pdf_option":"A4","wait_for_ready":true,"ready_selector":"html[data-pdf-ready=\"true\"]","base_url":"https://app.example.com"}' \
-o output.pdfcurl https://pdf.cloud.good-agency.cz/ \
--data-urlencode 'html=<html><body><h1>Test</h1></body></html>' \
--data-urlencode 'pdf_option=A4' \
-o output.pdfVrátí mapu dostupných PDF presetů.
200 OKContent-Type: application/json; charset=utf-8
DEFAULTA4A3A4LA3LA4FullA4LandscapeFull
curl https://pdf.cloud.good-agency.cz/pdf_optionsVygeneruje PNG screenshot z URL.
| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
url |
string |
ano | Cílová URL |
w |
string |
ne | Šířka viewportu/clipu v px |
h |
string |
ne | Výška viewportu/clipu v px |
- Pokud jsou poslané
wih, server nastaví viewport a vrátí oříznutý screenshot dané velikosti. - Pokud
wahchybí, vrací full-page screenshot. - Po načtení stránky se server pokusí automaticky potvrdit běžné cookie lišty s německými texty typu
Akzeptieren,Alle akzeptieren,OK.
200 OKContent-Type: image/png
400 Bad Requestkdyž chybíurl500 Internal Server Errorpři chybě renderu
curl "https://pdf.cloud.good-agency.cz/screenshot?url=https://example.com" -o screenshot.pngS pevnou velikostí:
curl "https://pdf.cloud.good-agency.cz/screenshot?url=https://example.com&w=1440&h=900" -o screenshot.pngVygeneruje PNG screenshot z poslaného HTML.
| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
html |
string |
ano | HTML dokument |
w |
string |
ne | Šířka viewportu/clipu v px |
h |
string |
ne | Výška viewportu/clipu v px |
- Pokud jsou
wahvyplněné, screenshot je oříznutý na zadané rozměry. - Jinak se vrací full-page screenshot.
200 OKContent-Type: image/png
400 Bad Requestkdyž chybí body400 Bad Requestkdyž jehtmlprázdné500 Internal Server Errorpři chybě renderu
curl https://pdf.cloud.good-agency.cz/screenshot \
-H 'Content-Type: application/json' \
-d '{"html":"<html><body><h1>Hello</h1></body></html>","w":"1280","h":"720"}' \
-o screenshot.pngEndpointy GET / a POST / používají interní preset loader.
- Pokud
pdf_optionneexistuje, server spadne zpět na výchozí PDF options. - Výchozí preset je řízený proměnnou
HCPDF_DEFAULT_PRESET_PDF_OPTIONS_NAME. - Cesta k souboru presetů je řízená proměnnou
HCPDF_PRESET_PDF_OPTIONS_FILE_PATH.
PDF i screenshot endpointy vracejí navíc:
Content-LengthCache-Control: no-cache, no-store, must-revalidatePragma: no-cacheExpires: 0