iPDF z pohľadu programátora a dizajnéra

Architektúra aplikácie striktne oddeľuje vizuálnu reprezentáciu iPDF formuláru (dizajn) od implementovanej biznis logiky. Takéto rozdelenie umožňuje v prípade zložitejších formulárov rozdeliť prácu medzi dizajnéra a programátora - dizajnér vytvorí CSS a grafiku formulára, programátor vytvorí definície pre správanie vstupných a výstupných polí.

Dizajn

V praxi väčšinou nie je potrebné rozdelenie prác medzi dizajnéra a programátora. Vytvorenie bežného iPDF formulára je zvládnuteľné pre jedného programátora so základmi CSS dizajnu podľa zložitosti dokumentu za 1 hodinu až po niekoľko dní.

Príprava a vytvorenie dizajnu iPDF tlačiva spočíva v nasledovných krokoch:

1. Vytvorenie HTML, CSS pre nový formulár
HTML je možné vytvoriť návrhom v akomkoľvek HTML editore. Podstatné je, aby vzhľad HTML tlačiva v čo najväčšej miere korešpondoval v konečným vytvoreným dokumentom. Úspešne je možné použiť rôzne voľne dostupné nástroje na konverziu zdrojových dokumentov do HTML kódu - napríklad z Microsoft Word do HTML apod.
2. Nastavenie web 2.0 elementov pre vstupné polia
Napríklad zobrazenie kalendára pre výber dátumu v políčku "Dátum a podpis", alebo integrácia zoznamov ulíc pre políčko "Vyberte ulicu vášho bydliska". V prípade viac stranového dokumentu je možné zapnúť podporu pre stránkovanie dokumentu - v takom prípade dizajnér tiež zodpovedá za správne nastavenie stránkovania (tabs). V tejto fáze môže príprava dizajnu dokumentu vyžadovať znalosť práce s javascriptom (JQuery).

Výsledný HTML kód tlačiva spolu s CSS a ostatnou grafikou je uložený v samostatnom nezávislom adresári (self-contained directory) a nie je závislý od žiadnych externých definícií. Pri prenose celého tlačiva stačí teda len prekopírovať celý adresár na cieľový server.

Biznis logika

iPDF je plne objektovo orientovaná aplikácia. Každé vstupné, resp. výstupné pole je reprezentované objektom s naviazanými validáciami, vzorcami, hodnotami, formátormi apod. Architektúra aplikácie teda rozlišuje dva typy polí vo formulári - vstupné a výstupné. Vytvorenie nového formulára teda pozostáva z vytvorenia definícií pre vstupné polia pomocou tzv. "input descriptors" ako aj výstupné polia, tzv. "output descriptors" podľa nasledovného:

1. Vytvorenie definícií pre vstupné polia (vstupné deskriptory, input descriptors)
Vstupné polia obsahujú pravidlá dôležité pre kontrolu údajov zadavaným užívateľom. Všetky vstupné deskriptory sú obsiahnuté v samostatnom súbore (input descriptor file), ktorý sa načíta jediný krát pri inicializácii dokumentu v rámci session. Názvy vstupných deskriptorov zodpovedajú názvom vstupných polí v HTML kóde dokumentu.

Príklad 1.:

Pre vstupné pole:


je možné definovať nasledovný vstupný deskriptor:

[A001_BIRTHDATE]
validatorPattern="birthdate(minage=15,accept_empty=1)"
helpid="napoveda-sekcia-1"

V uvedenom príklade je do vstupného textového poľa identifikovaného ako A001_BIRTHDATE možné zadať len hodnotu veku vyššiu alebo rovnú ako 15 rokov alebo ponechať políčko prázdne.

Príklad 2.:

Pre vstupné pole:


je možné definovať nasledovný vstupný deskriptor:

[A004_INCOME_TOTAL]
disabled=1
formula="number_format(max(0, [A002_INCOME_RENTAL]+[A003_INCOME_EMPLOYMENT]),2)"
helpid="napoveda-sekcia-2"

V tomto príklade pole A004_INCOME_TOTAL nepovoľuje zadanie žiadnej vstupnej hodnoty užívateľovi. Preto nemá definovaný validátor pre ošetrenie vstupnej hodnoty. Jeho hodnota je vypočítaná ako súčet hodnôt v poliach A002_INCOME_RENTAL a A003_INCOME_EMPLOYMENT, ktoré majú vlastné vstupné deskriptory s validátormi. Ak je súčet polí A002_INCOME_RENTAL a A003_INCOME_EMPLOYMENT nižší ako nula, nastaví sa v poli hodnota 0. Nakoniec sa hodnota v poli preformátuje na číslo s dvoma desatinnými miestami.

Pomocou horeuvedených príkladov je možné definovať aj veľmi komplexné vzťahy medzi poliami formulára. Momentálne iPDF podporuje viac ako 50 operácií s poliami (textové operácie, matematické, štatistické apod.).

2. Vytvorenie definícií pre výstupné polia (výstupné deskriptory, output descriptors)
Výstupné polia majú podstatne iný účel ako vstupné. Ich účelom je definovať umiestnenie a vzhľad vo vytvorenom dokumente.

Príklad 3.:

Pre výstupné pole:


je možné definovať nasledovný výstupný deskriptor:

[XA001_BIRTHDATE]
formula="[A001_BIRTHDATE]"
page="2"
x=463
y=25

V uvedenom príklade je vytvorený objekt výstupného poľa pod názvom XA001_BIRTHDATE, ktorý obsahuje hodnotu vstupného poľa A001_BIRTHDATE zadanú užívateľom. Hodnota poľa bude vytlačená na druhej strane vytvoreného dokumentu na súradniciach x=463 pixlov a y=25 pixlov.

Výstupné polia podporujú rôzne varianty výstupného formátu ako aj súradnicové systémy pre výpočet polohy poľa. (napr. bunka zarovnaná vpravo, spojené bunky s pevnou šírkou a výškou, veľkosť písma, italic, bold apod..).

Podporné vývojové nástroje - automatizácia a šablóny

Nakoľko manuálne vytvorenie vstupných, resp. výstupných deskriptov môže byť pomerne pracné a časovo náročné, je možné využiť automatizované nástroje na generáciu descriptorov. Tieto nástroje vyhľadajú všetky vstupné polia v HTML kóde dokumentu a pre každé pole vytvoria základnú definíciu deskriptora (vstupného alebo výstupného) podľa zvolenej šablóny, ktorú programátor môže ďalej modifikovať. Takýto prístup výrazne skráti čas potrebný na implementáciu biznis logiky a súčasne zníži výskyt programátorských chýb, napr. preklep v názve vstupného poľa.

Podobný efektívny prístup sa využíva taktiež pri vytváraní konečného dokumentu. iPDF importuje vytvorený PDF súbor v ktorom vyplní požadované prázdne polia. Týmto spôsobom sa ušetrí až 80-90% vývojárskeho času pre komplexnejšie PDF dokumenty v porovnaní s časom za ktorý by sa rovnaký dokument naprogramoval.