(_____UNDER CONSTRUCTION____)
Der jadice Druckdialog
jadice stellt einen eigenem Druckdialog zur Verfügung. Dieser Druckdialog bietet Anwendern viele Vorteile:
- Druckvorschau
- Druckerauswahl
- Verschiedene Druckeinstellungen, wie z.B. Anzahl Kopien, Seitenformat uvm.
- Eine Auswahl, welche Seitenelemente gedruckt werden sollen, z.B. Dokument, Annotations oder beides
Im folgenden ist eine Ansicht des jadice Druckdialogs.
Die technische Basis des jadice Druckdialogs beruht auf der Java Print Service API. Die Java Print Service API ist der Java Virtual Machine und bietet betriebssystemübergreifende High-Level API um PrintServices zu ermitteln, Druckjobs mit allgemeinen Einstellungen zu konfigurieren und anzustarten. Allgemeine Einstellungen sind Einstellungen, die weder spezifisch für das ausführende Betriebssystem noch für installierte Druckertreiber spezifisch sind.
Spezifische Druckertreiber Einstellungsdialoge
Manche Einstellungen sind spezifisch für bestimmte Druckertreiber. Diese Einstellungen können nur in dem Druckertreiber eigenen Einstellungsdialog.
/** * Druck Demo Command mit Nutzung des nativen Betriebssystem Druckdialogs. <p> * Es öffnet den nativen Druckdialog und löst bei Bestätigung einen Druckprozess aus. */ public class PrintWithNativePrintDialog extends DirectPrintDocumentCommand { private static final Logger log = LoggerFactory.getLogger(PrintDocumentCommand.class); @Override protected void execute() { final PrintJobConfiguration pjc = PrintJobConfiguration.create(); final EventList<Page> docPageList = getPageView().getDocument().getPages(); try { addPagesToPrint(pjc, docPageList); prepare(pjc); pjc.setShowPrintDialog(false); Printer printer = new Printer(pjc); PrinterJob printerJob = printer.getPrinterJob(); printerJob.setJobName(pjc.getPrintTitle()); printerJob.setPageable(new Pageable() { public PageFormat getPageFormat(int pageIndex) throws IndexOutOfBoundsException { return pjc.getPageFormat(); } public int getNumberOfPages() { return pjc.getNumbersOfPages(); } public Printable getPrintable(int pageIndex) throws IndexOutOfBoundsException { return null; } }); PrintRequestAttributeSet requestAttributeSet = printer.getPrintRequestAttributeSet(); if (requestAttributeSet == null) { requestAttributeSet = new HashPrintRequestAttributeSet(); printer.setPrintRequestAttributeSet(requestAttributeSet); } // Nativen Druckdialog anfordern try { // JRE 1.7+ requestAttributeSet.add(javax.print.attribute.standard.DialogTypeSelection.NATIVE); // JRE 1.6 // requestAttributeSet.add(sun.print.DialogTypeSelection.NATIVE); } catch (final Exception e) { log.error("\"DialogTypeSelection.NATIVE\" konnte nicht ausgewählt werden.); "); } if (printerJob.printDialog(requestAttributeSet)) { log.info("Executing print job"); PrintManager.executePrintJob(printer); } } catch (final JadiceException e) { log.fatal("Could not print", e); } } }