| smf | ||
| data.yml | ||
| extract_fields.py | ||
| fill_pdf.py | ||
| MFF_DPP_fields.yml | ||
| MFF_DPP_vzor.pdf | ||
| README.md | ||
Vyplňovač PDF formulářů
Nástroje pro hromadné vyplňování PDF formulářů. Optimalizováno pro DPP z Matfyzu, ale použitelné i na jiné PDF formuláře.
Skripty
extract_fields.py
Pomocný skript, který umí vyextrahovat formulářová pole z PDF a vygenerovat jejich předpis (popis formátu viz dále).
python extract_fields.py input.pdf -o fields.yaml
Pro potřeby aktuální verze Matfyzího DPP je již předpřipravený soubor
MFF_DPP_fields.yml a není potřeba ho vytvářet
znovu.
fill_pdf.py
Hlavní skript. Vyplní PDF formulář podle definice polí (fields.yaml)
a datového souboru (YAML/JSON). Řeší i doplnění chybějících fontů
(v původním PDF často nejsou například diakritické znaky, nebo třeba
jen subset těch použitých), na což používá DejaVu Sans font.
python fill_pdf.py --fields fields.yaml --data data.yaml input.pdf output.pdf
Formát fields.yml
Soubor definuje mapování mezi poli v PDF formuláři a datovými klíči v datovém YAML/JSON souboru.
Globální nastavení
global:
min_font_size: 8 # minimální velikost fontu (pt)
max_font_size: 12 # maximální velikost fontu (pt)
padding: 2 # odsazení textu od okrajů pole (pt)
Definice polí
Pole jsou organizována po stránkách:
pages:
- page: 1
fields:
- name: "jmeno" # název pole v PDF (neměnit!)
data: jmeno # klíč v datovém souboru (null = nevyplňovat)
type: text # "text" (default) nebo "checkbox"
multiline: false # true = zalamování textu do více řádků
min_font_size: 4 # přepíše globální nastavení
max_font_size: 10 # přepíše globální nastavení
padding: 4 # přepíše globální nastavení
Povinné je pouze name a data, ostatní atributy jsou volitelné. Padding a
velikosti se dědí z globálního nastavení, pokud nejsou přenastavené.
Pro checkboxy se v data odkazujeme na booleovský klíč. Prefix ! neguje
hodnotu, což je užitečné pro dvojice ano/ne:
- name: Check Box6
data: prohlaseni_k_dani
type: checkbox
- name: Check Box7
data: "!prohlaseni_k_dani"
type: checkbox
Override pole na konkrétní stránce
Pokud se pole se stejným name v PDF vyskytuje na více stránkách, dostanou
všechny výskyty stejnou hodnotu. Pokud je potřeba na konkrétní stránce vyplnit
jinou hodnotu, použije se prefix N| (číslo stránky):
- name: 9|cislo OP
data: op_cislo_datum_vydani
Soubory
MFF_DPP_fields.yml– okomentovaná definice políček pro aktuální verzi Matfyzího DPP (duben 2026)MFF_DPP_vzor.pdf– PDF soubor pro který byla vytvořenaMFF_DPP_fields.ymldata.yml– ukázkový datový soubor s daty pro jednu osobu