# Drucker Auswahlmaske statt auf dem Standarddrucker zudrucken



## A.T. (17. Feb 2005)

Hallo, muss schon wieder eine Frage stellen.
Und zwar versuche ich etwas am apache fop zu verändern.
Und zwar möchte wenn man die option -print verwendet nicht auf dem Standartdrucker gedruckt wird sondern man den Drucker wählen kann. Also diese Maske geöffnet wir auf der man den Drucker wählen kann.

So wenn ich das richtig verstanden habe wird der Druckbefehl an dieser Stelle erzeugt.

```
PrinterJob pj = PrinterJob.getPrinterJob();
        if(System.getProperty("dialog") != null)
            if(!pj.printDialog())
                throw new FOPException("Printing cancelled by operator");

        PrintRenderer renderer = new PrintRenderer(pj);
        int copies = getIntProperty("copies", 1);
        pj.setCopies(copies);
```
Das getPrinterJob() erstellt ja einen Printerjob auf dem Standartdrucker. Wie überrede ich den jetzt das noch zu ändern und dem User die auswahl zu lassen?
Müsste doch mit getPrinterService und setPrinterService gehen, nur wie?
Danke schon mal!
Gruß Andreas


----------



## thE_29 (17. Feb 2005)

Siehe FAQ!! (wieder einmal der zu faul für die Welt ist ;>)

http://www.java-forum.org/de/viewtopic.php?t=7843

 service = ServiceUI.printDialog(GraphicsEnvironment.
                                        getLocalGraphicsEnvironment().
                                        getDefaultScreenDevice().
                                        getDefaultConfiguration(), 200, 200,
            printService, defaultService, flavor, pras);


----------



## A.T. (18. Feb 2005)

Habe gesucht! Ehrlich! Nur nicht besonders geschickt!
Bin auch schon ein wenig weiter. Aber hin bekomme ich das noch nicht. Mal sehen vielleicht muss ich noch mal Fragen stellen, werde mich aber vorher noch intensiver mit der Suche befassen!!!

Trotzdem vielen dank für deine Hilfe!!!


----------



## thE_29 (18. Feb 2005)

Was geht den net??


Wenn du das oben ausführst, kommt der Dialog....


----------



## A.T. (18. Feb 2005)

Danke nochmal für deine Hilfe und auch an die die mir hier sonst geholfen haben! 
Bin da inzwischen durchgestiegen und es funktioniert!!!

Habe das jetzt wie folgt gelöst:


```
PrinterJob pj = PrinterJob.getPrinterJob();
        if(System.getProperty("dialog") != null)
            if(!pj.printDialog())
                throw new FOPException("Printing cancelled by operator");
                   
        /* Hier musste ich nur  die if- Abfrage mit der Methode .prontDialog einfügen pj ist mein PrinterJob den ich
            vorher angefordert habe. Das in den Klammern ist dann der Druck auftrag an sich.*/
        if(pj.printDialog()){
        	PrintRenderer renderer = new PrintRenderer(pj);
        	int copies = getIntProperty("copies", 1);
        	pj.setCopies(copies);

        	//renderer.setCopies(copies);

        	try {
        		driver.setRenderer(renderer);
        		driver.render(parser, inputHandler.getInputSource());
        	} catch (Exception e) {
        		if (e instanceof FOPException) {
        			throw (FOPException)e;
        		}
        		throw new FOPException(e);
        	  }
        }
```

Gruß Andreas
Ich glaube ich belieb euch jetzt erhalten! :wink:  Habe mir vorgenommen Java vernünftig zu lernen!


----------

