Existuje několik způsobů, jak ve webové aplikaci vytvářet tiskové sestavy, typicky ve formátu PDF. Méně častý, ale velmi dobře fungují způsob je vytvoření sestavy pomocí Open Office.
Proč Open Office?
Na první pohled je zavádějí další aplikace do infrastruktury serveru zbytečné – můžeme přece velmi snadno tisknout pomocí upraveného CSS stylu. Jenže to příliš dobré řešení není – HTML nebylo pro účely tisku navrženo. Co když potřebujeme na každé stránce papíru hlavičku a patičku? Co když potřebujeme kvalitní a kontrolovanou sazbu textů? Co když chceme, aby uživatel měl možnost použít SAVE AS, kdy se mu uloží kompletní sestava včetně obrázků? Pokud použijeme Open Office ke generování PDF sestav, spoustu problémů tím vyřešíme.
JodReports
Jednou z knihoven, která podporuje vytváření reportů v Open Office je JodReports. Princip je jednoduchý – knihovna otevře soubor se šablonou, najde v ní FreeMarker příkazy, které vykoná. K této operaci není potřeba běh Open Office. Jak je to možné? Nativní Open Office soubory jsou textové.
DocumentTemplateFactory documentTemplateFactory = new DocumentTemplateFactory(); DocumentTemplate template = documentTemplateFactory.getTemplate(new File("my-template.odt")); Map data = new HashMap(); data.put("var1", "value1"); //...další data... template.createDocument(data, new FileOutputStream("my-output.odt"));
JodConverter
Doplňující knihovnou je JodConverter. Tato knihovna dokáže převést nativní soubor Open Office do některého z podporovaných výstupních formátů. To již nezvládne knihovna sama, ale potřebuje k tomu běžícího démona Open Office. To je poněkud nepříjemné, mít spuštěného démona na serveru, ale alespoň běží v headless režimu.
OfficeManager officeManager = new DefaultOfficeManagerConfiguration().buildOfficeManager(); officeManager.start(); OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); converter.convert(new File("test.odt"), new File("test.pdf"); officeManager.stop();
Výhody a nevýhody
Výhody
- Template může připravit i BFU.
- Můžeme exportovat do velkého množství formátů, například MS Office formát dokumentů je mezi uživateli populární.
- Můžeme exportovat do oblíbeného PDF formátu.
- Open Office mají dobrý wysiwyg – co je na obrazovce bude i na tiskárně.
- Open Office jsou zadarmo a open source.
Nevýhody
- Open Office je potřeba nainstalovat na server, nejsou součástí aplikace.
- Spuští se démon Open Office
- Open Office není sázecí systém, má svá omezení
- Pokud chceme generovat PDF, tak je toto řešení relativně pomalé a náročné na výkon – sestavy je tudíž vhodné generovat offline. To znamená: generovat na pozadí a uložit sestavu jako soubor.
Napsat komentář