fix
This commit is contained in:
@@ -13,7 +13,7 @@ v tele requestu a vrati soubor PDF. Zvlada dokumenty o tisicich stranek.
|
||||
|
||||
## Aktualni stav
|
||||
|
||||
Verze 1.0.0, stav development.
|
||||
Verze 1.0.1, stav development.
|
||||
|
||||
Hotovo:
|
||||
|
||||
@@ -28,6 +28,8 @@ Hotovo:
|
||||
- fronta s omezenym poctem paralelnich workeru
|
||||
- volitelny callback po dokonceni jobu
|
||||
- strukturovane JSON logovani s job_id
|
||||
- obchazeni chyby WeasyPrintu u obrazku s procentualni sirkou v bunce tabulky
|
||||
- Swagger popisuje moznosti strankovani i uchovavani souboru
|
||||
|
||||
Neni hotovo a neni ani v zadani:
|
||||
|
||||
|
||||
+46
-2
@@ -25,6 +25,11 @@ Hlavicky odpovedi:
|
||||
Pokud je `X-Missing-Assets` nenulovy, v PDF neco chybi. Detaily jsou dostupne
|
||||
jen u asynchronni cesty, kde se vraci cely seznam.
|
||||
|
||||
Vysledek se nikam neuklada. Vznikne v docasnem adresari, odesle se v odpovedi
|
||||
a hned po jejim odeslani se i s pracovnim adresarem smaze. Neexistuje adresa,
|
||||
ze ktere by sel stahnout znovu. Kdo potrebuje vysledek pozdeji, pouzije
|
||||
`POST /jobs`.
|
||||
|
||||
## POST /jobs
|
||||
|
||||
Zaradi konverzi do fronty. Vraci HTTP 202.
|
||||
@@ -73,14 +78,38 @@ dokumentu ukazatel postupu probehne dvakrat.
|
||||
|
||||
## GET /jobs/{job_id}/result
|
||||
|
||||
Stahne hotove PDF. Soubor se streamuje, nenacita se cely do pameti.
|
||||
Stahne hotove PDF. Soubor se streamuje, nenacita se cely do pameti. Stahovat
|
||||
lze opakovane, dokud vysledek nevyprsi.
|
||||
|
||||
- 404 job neexistuje nebo uz expiroval
|
||||
- 409 job jeste nedobehl nebo skoncil chybou
|
||||
|
||||
## DELETE /jobs/{job_id}
|
||||
|
||||
Zrusi bezici job nebo smaze hotovy vysledek.
|
||||
Zrusi bezici job nebo smaze hotovy vysledek hned, bez cekani na expiraci.
|
||||
Soubor z uloziste zmizi okamzite, zaznam jobu zustava jeste po dobu TTL, aby
|
||||
bylo videt, co se s nim stalo.
|
||||
|
||||
## Uchovavani souboru
|
||||
|
||||
Nic se neuklada trvale. Vsechno zije jen v docasnem adresari `STORAGE_DIR`
|
||||
a v pameti procesu.
|
||||
|
||||
| Co | Kde skonci | Jak dlouho |
|
||||
|---|---|---|
|
||||
| zdrojove HTML | jen v pameti behem konverze | do konce konverze |
|
||||
| vysledek `POST /convert` | docasny adresar jobu | do odeslani odpovedi, pak se maze |
|
||||
| vysledek `POST /jobs` | docasny adresar jobu | `JOB_RESULT_TTL_SECONDS` od dokonceni, vychozi 1 hodina |
|
||||
| meziprodukty renderu | docasny adresar jobu | do dokonceni jobu, pak se mazou |
|
||||
| vysledek neuspesneho jobu | nikde | pracovni adresar se maze hned |
|
||||
|
||||
Presny cas expirace je v poli `expires_at` u `GET /jobs/{job_id}`. Po nem se
|
||||
smaze soubor i zaznam jobu a dalsi dotaz vraci 404 `job_not_found`.
|
||||
|
||||
Uloziste neni trvale. Restart sluzby znamena ztratu rozpracovanych jobu
|
||||
i hotovych vysledku, ktere jeste nikdo nestahl. Rozpracovane joby se oznaci
|
||||
jako failed s kodem `service_restarted`. Pri startu se navic smazou adresare
|
||||
jobu, ktere po restartu zustaly bez zaznamu.
|
||||
|
||||
## GET /health
|
||||
|
||||
@@ -207,6 +236,21 @@ Delici body jsou elementy `section`, `article`, `h1`, elementy s atributem
|
||||
`break-before`. Pokud dokument zadny takovy nema, renderuje se vcelku a sluzba
|
||||
to zaloguje.
|
||||
|
||||
### obrazky v tabulkach
|
||||
|
||||
WeasyPrint neumi vyresit procentualni sirku obrazku uvnitr bunky tabulky.
|
||||
Sirku bunky v tu chvili jeste nezna, obrazek vyjde nulove siroky a z PDF zmizi
|
||||
bez jakekoliv chyby, takze se neobjevi ani v `missing_assets`.
|
||||
|
||||
Sluzba proto u enginu `weasyprint` u obrazku uvnitr `td` a `th` prepise
|
||||
`width: <n>%` na `width: auto` a procentualni atribut `width` odstrani. Pokud
|
||||
obrazek nema zadne `max-width`, doplni se `max-width: 100%`, aby z bunky
|
||||
nevystoupil. Obrazek se tim vykresli ve sve vlastni velikosti omezene bunkou,
|
||||
coz je to, co dokument zamyslel.
|
||||
|
||||
Chromia se to netyka, ten takove obrazky rozvrhne spravne, a uprava se u nej
|
||||
neprovadi.
|
||||
|
||||
### wait_for
|
||||
|
||||
Pouziva jen Chromium. `state` je `load`, `domcontentloaded` nebo `networkidle`,
|
||||
|
||||
@@ -8,7 +8,7 @@ runtime `.env`. Zadna promenna neni povinna, sluzba nastartuje i bez nich.
|
||||
| Promenna | Vychozi | Vyznam |
|
||||
|---|---|---|
|
||||
| `APP_NAME` | `html-to-pdf` | nazev v dokumentaci a v odpovedi /version |
|
||||
| `APP_VERSION` | `1.0.0` | verze |
|
||||
| `APP_VERSION` | `1.0.1` | 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 |
|
||||
|
||||
@@ -77,6 +77,10 @@ Secrets se do logu nezapisuji.
|
||||
konverze.
|
||||
- WeasyPrint nespousti JavaScript. Pro dokumenty dokreslovane skripty je nutne
|
||||
Chromium.
|
||||
- WeasyPrint neumi procentualni sirku obrazku uvnitr bunky tabulky. Sluzba to
|
||||
obchazi prepsanim na `width: auto`, viz api.md. Podobne vlastnosti se mohou
|
||||
objevit i jinde, protoze WeasyPrint neni prohlizec. Kdyz neco v PDF chybi
|
||||
a `missing_assets` je prazdne, stoji za to zkusit `engine: chromium`.
|
||||
|
||||
## Testy
|
||||
|
||||
@@ -97,4 +101,5 @@ Co je pokryte:
|
||||
- spravnost cisel stranek po slouceni
|
||||
- obsah ukazuje na skutecne stranky
|
||||
- nedostupny asset render nezastavi a objevi se v odpovedi
|
||||
- procentualni sirka obrazku v bunce tabulky se prepise na auto
|
||||
- zruseni beziciho jobu, plna fronta, chovani pri ukonceni sluzby
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
# Zaznam zmen
|
||||
|
||||
## 1.0.1
|
||||
|
||||
Opraveno:
|
||||
|
||||
- obrazek uvnitr bunky tabulky, ktery ma sirku v procentech, uz z PDF nemizi.
|
||||
WeasyPrint takovou sirku neumi vyresit proti bunce, jejiz sirku jeste nezna,
|
||||
obrazek vysel nulove siroky a zmizel bez chyby, takze se neobjevil ani
|
||||
v `missing_assets`. Sluzba nove u enginu `weasyprint` prepise u obrazku
|
||||
v `td` a `th` `width: <n>%` na `width: auto`, odstrani procentualni atribut
|
||||
`width` a doplni `max-width: 100%`, pokud zadne nema. Chromia se to netyka.
|
||||
Typicky pripad je produktovy list, kde je fotka v levem sloupci tabulky.
|
||||
|
||||
Zmeneno:
|
||||
|
||||
- Swagger a OpenAPI popisuji moznosti strankovani, tedy `page`, `page_numbers`,
|
||||
`chunking` a `toc`, vcetne omezeni jednotlivych rezimu cislovani
|
||||
- Swagger a OpenAPI popisuji uchovavani souboru u `POST /convert` i u `POST /jobs`
|
||||
vcetne doby dostupnosti vysledku a chovani po restartu sluzby
|
||||
- pole odpovedi `JobState` a `JobProgress` maji v OpenAPI popis
|
||||
- pribyl priklad tela requestu s cislovanim stranek na sirku stranky
|
||||
|
||||
## 1.0.0
|
||||
|
||||
Prvni implementace sluzby.
|
||||
|
||||
Reference in New Issue
Block a user