(_____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
Nativer Druckdialog Command
/** * 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); } } }