Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilJozef Štěpánek
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
<Workbook xmlns="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">
6
... EUROSKI.CZ, Resslova 3 Seznam pojištění pro zájezd č.: XX/012345 Čí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 97-2003 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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.