1 / 16

Informační systém pro cestovní kanceláře

Informační systém pro cestovní kanceláře. Aleš Tryml. Obsah prezentace. představení informačního systému účel produktu použité programové prostředky výsledek zajímavé pasáže z implementace komunikace s MS Office tiskové sestavy. Informační systém Skisoft. Účel produktu:

guri
Download Presentation

Informační systém pro cestovní kanceláře

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informační systém pro cestovní kanceláře Aleš Tryml

  2. Obsah prezentace • představení informačního systému • účel produktu • použité programové prostředky • výsledek • zajímavé pasáže z implementace • komunikace s MS Office • tiskové sestavy

  3. Informační systém Skisoft • Účel produktu: • software na zakázku • zastřešení všech provozních dat CK • tiskové sestavy • vouchery, zasedací pořádky, pojištění, všemožné seznamy • Výsledek: • tlustý klient + možnost propojit s WWW • jazyk Java • databáze PosgreSQL

  4. Pokec Javy s MS Office • vytváření dokumentů čitelných v MS Office • textové soubory bez stylů (Word), data oddělená středníkem (Excel) • formáty XML se styly • úprava již vytvořených dokumentů • Apache POI • POIFS - OLE 2 Compound Document format • HWPF, HSSF, HSLF, HPSF, HDGF • přímá komunikace s MS Office • Java native interface (JNI)

  5. MS Excel – xml 2003 • <?xmlversion="1.0"?> • <?mso-applicationprogid="Excel.Sheet"?> • <Workbookxmlns="urn:schemas-microsoft-com:office:spreadsheet" • xmlns:o="urn:schemas-microsoft-com:office:office" • xmlns:x="urn:schemas-microsoft-com:office:excel" • xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" • xmlns:html="http://www.w3.org/TR/REC-html40"> • <DocumentPropertiesxmlns="urn:schemas-microsoft-com:office:office"></DocumentProperties> • <Styles> • <Style ss:ID="Default" ss:Name="Normal"> • <Alignmentss:Vertical="Bottom"/> • <Borders/> • <Font x:CharSet="238" x:Family="Swiss"/> • <Interior/> <NumberFormat/> <Protection/> • </Style> • <Style ss:ID="sNadpis"> • <Font ss:Bold="1"/> • </Style> • </Styles>

  6. MS Excel – xml 2003 • <Worksheetss:Name="CH-070110"> • <Table> • <Columnss:Width="120"/> • <Columnss:Width="85"/> • ... • <Row> • <Cell><Data ss:Type="String">EUROSKI.CZ, Resslova 3</Data></Cell> • <Cell ss:StyleID="sNadpis" ss:Index="4"> • <Data ss:Type="String">Seznam pojištění pro zájezd č.: XX/012345</Data> • </Cell> • </Row> • <Row> • <Cell ss:StyleID="sTabulkaHlavicka"> • <Data ss:Type="String">Číslo pojistné smlouvy</Data> • </Cell> • <Cell ss:StyleID="sTabulkaHlavicka"> • <Data ss:Type="String">Příjmení</Data> • </Cell> • ... • </Row> • </Table> • </Worksheet>

  7. Apache POIFS • nízko-úrovňovéAPI • zpřístupňuje data uložená v OLE 2 Compound Document format • základ pro HWPF, HSSF, ... • možno srovnat s „zip“ knihovnou

  8. Apache POI - HxPF • Horrible (Word, Spreadsheet, …) Processor Format • Java API pro zpracování MS Excel souborů • Podpora Office 97-2003 • Office 2007 není OLE2 formát • Omezené možnosti použití

  9. Apache POI – HSPF • založení sešitu • HSSFWorkbookwb = newHSSFWorkbook(); • FileOutputStreamfileOut = newFileOutputStream("workbook.xls"); • wb.write(fileOut); • fileOut.close(); • založení nového listu • HSSFWorkbookwb = newHSSFWorkbook(); • HSSFSheet sheet1 = wb.createSheet("newsheet"); • HSSFSheet sheet2 = wb.createSheet("secondsheet"); • FileOutputStreamfileOut = newFileOutputStream("workbook.xls"); • wb.write(fileOut); • fileOut.close();

  10. JNI – Java Native Interface • JNI dovoluje využití knihoven napsaných v jiných jazycích • nutno vytvořit wrapper pro obě strany • poměrně zdlouhavý a těžkopádný • zvážit, zda není jednodušší použít externí C# program, který bude Java přes parametry pouze spouštět

  11. Tisk v Javě • vyvolání tiskového dialogu a tisk na libovolnou tiskárnu • java.awt.print(JDK 1.1) • PrinterJob – zajišťuje samotný tisk • Printable, Pageable – popisují obsah • podpůrné třídy: • PageFormat – popisuje tisknutelnou oblast • Graphics, Graphics2D – zajišťuje vlastní vykreslování obsahu - stejné jako kreslení na obrazovku

  12. Příklad PrinterJob • try { • // fetch a PrinterJob • PrinterJobjob = PrinterJob.getPrinterJob(); • //ziskaniprintable • VoucherPrintablevoucherPrintable • = newVoucherPrintable(parametry, data); • job.setPrintable(voucherPrintable); • // createanattribute set to storeattributesfromtheprint dialog • PrintRequestAttributeSetattr = newHashPrintRequestAttributeSet(); • attr.add(newMediaPrintableArea(10, 7, 190, 283,MediaPrintableArea.MM)); • // display a print dialog andrecordwhetheror not the user cancelsit • booleanprintAccepted = job.printDialog(attr); • if (printAccepted) { • // ifthe user didn't cancelthe dialog • // do theprinting (mayneed to handle PrinterException) • job.print(attr); • } • } catch (PrinterExceptionpe) { • System.err.println("Errorprinting: " + pe.getMessage()); • }

  13. Příklad Printable • public int print(Graphics g, PageFormatpf, int page) • throws PrinterException { • if (page > 0) { /* We have only one page, and 'page' is zero-based */ • return NO_SUCH_PAGE; • } • /* User (0,0) is typically outside the imageable area, so we must • * translate by the X and Y values in the PageFormat to avoid clipping • */ • Graphics2D g2d = (Graphics2D)g; • g2d.translate(pf.getImageableX(), pf.getImageableY()); • /* Now we perform our rendering */ • g.drawString("Hello world!", 100, 100); • /* tell the caller that this page is part of the printed document */ • return PAGE_EXISTS; • }

  14. Pageable • int getNumberOfPages() • PageFormat getPageFormat(int pageIndex) • Printable getPrintable(int pageIndex)

  15. Tisk Swing komponent • klasický print všech Swingů • problém stránkování • rozřezání vs konkrétní implementace print Java 1.6 • problém doplňujících údajů

  16. Závěr • děkuji za pozornost

More Related