Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Aleš Tryml.  představení informačního systému  účel produktu  použité programové prostředky  výsledek  zajímavé pasáže z implementace  komunikace.

Podobné prezentace


Prezentace na téma: "Aleš Tryml.  představení informačního systému  účel produktu  použité programové prostředky  výsledek  zajímavé pasáže z implementace  komunikace."— Transkript prezentace:

1 Aleš Tryml

2  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  Úč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  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  

6 ...   EUROSKI.CZ, Resslova 3   Seznam pojištění pro zájezd č.: XX/   Číslo pojistné smlouvy   Příjmení  ... 

7  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  Horrible (Word, Spreadsheet, …) Processor Format  Java API pro zpracování MS Excel souborů  Podpora Office  Office 2007 není OLE2 formát  Omezené možnosti použití

9  založení sešitu  HSSFWorkbook wb = new HSSFWorkbook();  FileOutputStream fileOut = new FileOutputStream("workbook.xls");  wb.write(fileOut);  fileOut.close();  založení nového listu  HSSFWorkbook wb = new HSSFWorkbook();  HSSFSheet sheet1 = wb.createSheet("new sheet");  HSSFSheet sheet2 = wb.createSheet("second sheet");  FileOutputStream fileOut = new FileOutputStream("workbook.xls");  wb.write(fileOut);  fileOut.close();

10  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  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  try {  // fetch a PrinterJob  PrinterJob job = PrinterJob.getPrinterJob();  //ziskani printable  VoucherPrintable voucherPrintable  = new VoucherPrintable(parametry, data);  job.setPrintable(voucherPrintable);  // create an attribute set to store attributes from the print dialog  PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();  attr.add(new MediaPrintableArea(10, 7, 190, 283, MediaPrintableArea.MM));  // display a print dialog and record whether or not the user cancels it  boolean printAccepted = job.printDialog(attr);  if (printAccepted) {  // if the user didn't cancel the dialog  // do the printing (may need to handle PrinterException)  job.print(attr);  }  } catch (PrinterException pe) {  System.err.println("Error printing: " + pe.getMessage());  }

13  public int print(Graphics g, PageFormat pf, 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  int getNumberOfPages()  PageFormat getPageFormat(int pageIndex)  Printable getPrintable(int pageIndex)

15  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  děkuji za pozornost


Stáhnout ppt "Aleš Tryml.  představení informačního systému  účel produktu  použité programové prostředky  výsledek  zajímavé pasáže z implementace  komunikace."

Podobné prezentace


Reklamy Google