Marc Reichelt: Drucken (die *wievielteauchimmer*)

Beitrag lesen

Hallo an alle,

nun habe ich mich seit einigen Wochen nicht mehr damit befasst, und jetzt holt mich mein altes Problem wieder ein: Drucken mit Java.
Ich bekomme es einfach nicht hin. :-(

Ich benutze XSL-FO als Ausgangsformat, und habe dank FOP (siehe API) folgende Formate zur Hand:
 - AWT (von Java)
 - MIF
 - PCL
 - PDF
 - PS

Die Konstante RENDER_PRINT des Driver-Objekts habe ich schon gesehen, allerdings bekomme ich bei Benutzung des dreizeiligen Codes von hier einen Fehler (es ist alles korrekt gesetzt!).

Driver driver = new Driver(foFile, null);  
driver.setRenderer(Driver.RENDER_PRINT);  
driver.run();

<fehlermeldung>
"Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Use renderer form of setRenderer() for PRINT
 at org.apache.fop.apps.Driver.setRenderer(Driver.java:353)"
</fehlermeldung>

Nun soll eines dieser Formate (welches davon ist mir egal) unter Windows gedruckt werden - und zwar nicht nur auf PostScript-fähigen Druckern, sondern auf "normalen" (sic!) Windows-Druckern. Auf PostScript-Druckern bekomme ich es hin. Unter Linux PS- oder PDF-Dateien zu drucken ist normalerweise kein Problem, aber unter Windows?

Folgendes habe ich schon probiert:
AcroRd32.exe /p /h <datei.pdf>

Der Befehl druckt mir dir PDF-Datei aus, lässt den Adobe Reader aber geöffnet. Daher schieße ich diesen nach ein paar Sekunden wieder ab:
taskkill /IM AcroRd32.exe

Das ist natürlich eine sehr grausame Lösung, die ich unbedingt vermeiden möchte, wenn es nicht irgendwie anders geht.

Mit Ghostscript habe ich es auch schon probiert, bekomme aber ziemlich schlechte Resultate (druckt über den Druckbereich hinaus, nur in schwarz/weiß, obwohl der Drucker Farbe unterstützt).

Kann mir jemand helfen? Ich wäre ihm äußerst dankbar - und beim nächsten Selftreffen gibt's gleich was schönes spendiert... :-)

Natürlich wäre es auch toll, wenn man OpenOffice.org irgendwie ansteuern könnte (am Besten die API), sodass es all diese Dinge übernimmt. Ich müsste dann zwar statt XSL-FO andere Dokumente (OpenDocument) erzeugen, doch das würde ich eingehen - immerhin würde dieser Code dann für viele Java-Programmierer eine schöne Lösung bedeuten, um zu Drucken oder PDF-Dateien zu erstellen.

Freundliche Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
http://emmanuel.dammerer.at/selfcode.html