Viacero našich klientov sa pýta, ako funguje náš systém generovania PDF faktúr, ich podpisovanie certifikátom a následne rozposlanie klientom. Tento systém nám ušetrí náklady na distribúciu papierových faktúr. Prichádzajú na to už aj veľké spoločnosti, ktoré postupne tiež prechádzajú na elektronické faktúry.

Pre menšie podniky existuje už niekoľko služieb, ktoré si môžete zaplatiť na mesačnej báze a pomocou nich generovať a spravovať svoje faktúry: SuperFaktura.sk, eFaktury.sk, pre Českú republiku napr. fakturoid.cz.  Keďže je záujem o tento typ služby, dohodli sme sa so Superfaktura.sk na ďalšom zákazníckom bonuse. Naši klienti si môžu vytvárať vlastné faktúry doživotne s 25% zľavou. S tými, ktorí to chcú spraviť na kolene ako my, sa podelíme o naše know-how.

Na generovanie PDF v php existuje veľa knižníc – či už open-source alebo platených. Väčšina z nich, bohužiaľ, funguje veľmi pomaly alebo na vygenerovanie potrebujú veľa RAM. My používame na generovanie PDF linuxovú utilitku HTMLDOC, ktorá generuje PDF z HTML stránok. Je voľne dostupná (napr. na rôznych repozitároch linuxových distribúcií), rýchla a jednoduchá na používanie.

Najskôr musíme skonvertovať content pre faktúru do kódovania ISO-8859-2:
$fakturaISO = iconv("UTF-8", "ISO-8859-2//TRANSLIT", $fakturaUTF);

Potom uložíme html-faktúru na disk:
file_put_contents($pathToHTMLfile, $fakturaISO, LOCK_EX);

Nakoniec dáme HTMLDOC pokyn na vygenerovanie PDF:
system('htmldoc --quiet --webpage --color --charset iso-8859-2 --bodyfont helvetica --embedfonts -t pdf14 --footer ... --size a4 --permissions none --permissions print --encryption '.$pathToHTMLfile.' -f '.$pathToPDFfile.'');

Na podpis PDF máme nakódený špeciálny signbot. Je to daemon v perli, ktorý komunikuje cez xmlrpc a archivuje všetky vygenerované a podpísané PDF. Týmto spôsobom vieme zistiť, čo bolo v minulosti podpísané. K daemonu existuje ešte konzolový klient sign_pdf.pl. Stačí mu podhodiť PDF a on ho dodatočne podpíše (na pozadí to komunikuje s daemonom). Tento klient spúšťa WebAdmin, keď sa podpisuje napr. vygenerovaná faktúra.

Na samotné podpísanie PDF (čo rieši daemon) sa používa PortableSigner, čo je open-source aplikácia v Jave, ktorá je určená na podpis PDF. Ešte pred podpísaním cez PortableSigner sa používa jeden opensource tool Qpdf, ktorý vie upraviť rôzne parametre PDF, napr. zapnúť šifrovanie, povoliť tlač a podobne. Každé vložené PDF sa preženie cez Qpdf a následne cez PortableSigner.

To je všetko. Už len dodám, že HTMLDOC má mnoho argumentov, ktorými sa dajú vlastnosti PDF meniť. Všetky nájdete v manuálových stránkach a v dokumentácii.

Komentáre