Arbeiten mit Druckelementen
Druckelemente konfigurieren
Wenn Benutzer über den vorgeschalteten Druckdialog drucken, möchten Sie möglicherweise die zu druckenden Elemente bestimmen. Ab jadice document platform 5.2.0.0 gibt es die Möglichkeit die im Druckdialog angebotenen Elemente über die Klasse com.levigo.jadice.printer.PrintEnvironment
zu konfigurieren. Diese Klasse verfolgt ein statisches Konzept, das generelle Einstellungen zur Druckumgebung unabhängig vom einzelnen Druckjob ermöglicht. Das heisst, diese Einstellungen sollten nur ein einziges Mal vorgenommen werden.
Um eine Auswahl von Elementen, im Folgenden Layer genannt, zu ermöglichen haben wir eine Art Trägerobjekt (com.levigo.jadice.printer.LayerSelection
) bereitgestellt. Mit dieser Klasse ist es möglich eine beliebige Zusammenstellung von Layern aufzubauen und einen Namen zuzuordnen.
Das nachfolgende Beispiel zeigt, wie die Klasse PrintEnvironment
dazu benutzt werden kann:
Collection<LayerSelection> registered = PrintEnvironment.getRegisteredLayerSelections(); registered.clear(); // löscht alle bereits registrierten LayerSelection-Objekte // Document + Annotations LayerSelection documentAndAnnotations = new LayerSelection("Elements.DocumentAndAnnos", DocumentLayer.DEFAULT, DocumentLayer.ANNOTATIONS); registered.add(documentAndAnnotations); // Document only LayerSelection documentOnly = new LayerSelection("Elements.Document", DocumentLayer.DEFAULT); registered.add(documentOnly); // Konfiguration der Standardauswahl PrintEnvironment.setDefaultLayerSelection(documentAndAnnotations);
Ausgewählte Druckelemente speichern
Das nachfolgende Beispiel zeigt, wie die während eines Drucks gewählten Druckelemente beim nächsten Druck - unabhängig davon ob mit oder ohne Druckdialog - vorausgewählt werden können.
public class DemoPrint extends PrintDocumentCommand { private class PrintElementsListener implements PrintEventListener { private final PrintJobConfiguration pjc; public PrintElementsListener(PrintJobConfiguration pjc) { this.pjc = pjc; } @Override public void printStateChanged(PrintEvent e) { if(e == null || e.getType() == null) { return; } if (e.getType().equals(PrintEvent.PrintEventType.STARTED)) { // Catch up the layer selection that will be used for print LayerSelection layerSelection = pjc.getLayerSelectionToPrint(); // Save layer selection to be pre-selected next time PrintEnvironment.setDefaultLayerSelection(layerSelection); // Remove this listener instance to avoid increasing memory and wrong behaviour PrintEventBroadcaster.removePrintListener(this); } } } @Override protected void prepare(PrintJobConfiguration pjc) { PrintEventBroadcaster.addPrintListener(new PrintElementsListener(pjc)); } }