Skripty na vyplňování PDF formulářů
Find a file
2026-04-10 00:40:14 +02:00
smf ŠMF-specific scripts 2026-04-10 00:40:14 +02:00
data.yml README and examples 2026-04-10 00:40:14 +02:00
extract_fields.py Min and max font sizes for fields in PDF 2026-04-09 23:53:36 +02:00
fill_pdf.py Multiline support 2026-04-09 23:53:36 +02:00
MFF_DPP_fields.yml Fields from the new DPP 2026-04-09 23:56:37 +02:00
MFF_DPP_vzor.pdf README and examples 2026-04-10 00:40:14 +02:00
README.md README and examples 2026-04-10 00:40:14 +02:00

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řena MFF_DPP_fields.yml
  • data.yml ukázkový datový soubor s daty pro jednu osobu