# Problem: Mehrere PDF-Files nacheinander Öffnen



## A.T. (24. Sep 2008)

Hallo zusammen,
ich habe ein Problem und zwar möchte ich mehrere PDF-Files hintereinander öffnen. Allerdings werden diese zu schnell hintereinander geöffnet, dadurch werden immer wieder welche ausgelassen.
Geöffnet werden die Files mit: Runtime.getRuntime().exec(ausfuehren);
In ausfuehren steht etwas wie CMD.EXE /C start http://localhost:8080/irgendwelcheOrdner/datei01.pdf
Ort und Dateiname müssen flexibel sein.
Java 6 darf ich noch nicht verwenden. Die Klasse Desktop entfällt also...

Im Moment wird zuerst ein INetBrowser geöffent und von hier aus der AcrobatReader. Ist es möglich den INetBrowser zu umgehen, muss aber nicht sein. Wichtig wäre das alle Dateinen wirklich geöffnet werden. Kann ich irgendwie so lange warten bis das Programm gestartet ist?

Ein tipp wäre super!
Danke!

Gruß
A.T.


----------



## The_S (24. Sep 2008)

Runtime.getRuntime().exec liefert einen Process zurück. Auf diesen kannst du warten.

Du könntest die PDFs direkt dem Acrobat-Reader übergeben. Dazu müsstest du aber wissen, wo dieser Installiert ist.


----------



## A.T. (24. Sep 2008)

Auf den Process kann ich aber nur mit waitfor warten und das würde bedeuten dann mein Programm erst wieder läuft, wenn das angesprochene Programm, in meinem Fall der AcrobatReader, beendet wurde. Dann würde erst die nächste Datei geöffnet.

Das fällt eher flach, da dieses Programm auf verschiedenen Rechnern läuft. Aber ist auch nicht so schlimm.

Danke schon mal für deine Hilfe!


----------



## The_S (24. Sep 2008)

Wenn du einen lokalen Pfad angibst ohne http:// vorneweg sollte sich auch direkt der Acrobat Reader öffnen.


----------



## Landei (24. Sep 2008)

> Java 6 darf ich noch nicht verwenden. Die Klasse Desktop entfällt also...


Das ist Folter!


----------



## The_S (24. Sep 2008)

Warum ist das Folter? Das ist normal ...


----------



## A.T. (24. Sep 2008)

Zuhause benutze ich, wenn ich mal was mache auch immer die aktuelles Version aber im Job? Da ist es normal das da erst mal gewartet wird. Ob man das als Folter bezeichnen muss/kann? Weis ich auch nicht...


----------



## HoaX (24. Sep 2008)

hol dir "jdic" dann hast du auch die klasse Desktop, ohne java6
http://jdic.dev.java.net


----------



## A.T. (24. Sep 2008)

Kann ich mti jdict mein Problem lösen?

Mal ein anderer Ansatz...
Ist es möglich herauszufinden welche Programme auf dem System laufen? Und dann am besten noch mit welcher geöffneten Datei? 
Konkrett würde das in meinem Fall heißen, kann ich irgendwie feststellen wie viele und ob überhaupt AcrobatReader laufen und welche Dateien geöffnet sind?


----------



## The_S (24. Sep 2008)

Du kannst über JNI und die psapilib von WINDOWS die Prozesse auslesen und ggf. einem Programm zuweisen. So kommst du auch an die Titel der Fenster. Also u. U. auch an die geöffneten Dateien, falls der Name der Dateien im Titel erfasst wird.


----------



## A.T. (24. Sep 2008)

Gibts dazu etwas gutes zu lesen? Dann würde ich das mal ausprobieren. Würde das Problem für Windows dann hoffentlich beseitigen...


----------



## The_S (25. Sep 2008)

Ein sehr gutes JNI Tutorial findest du hier

http://www.haertfelder.com/jni.html

Hier die Doku zur psapi

http://msdn.microsoft.com/en-us/library/ms684884(VS.85).aspx

Wenn du sonst noch was brauchst: Schrei einfach 

Ps.: Was spricht dagegen die PDFs einfach in deinem Java-Programm zu öffnen? https://pdf-renderer.dev.java.net/


----------



## A.T. (29. Sep 2008)

Ich bin es noch mal. Leider bringt mich das alles nicht weiter, da man den Reader über die Kommandozeile nicht mit einem Link als Parameter öffnen kann.

Wenn ein Browser geöffnet ist, lassen sich beliebig viele PDF-Files sicher öffnen. Allerdings bekomme ich den Browser nicht wieder geschlossen...
Geöffnet wird das alles in einer Singelton Klasse. Wenn ich jetzt beim esten durchlauf einen Browser öffne und nach dem letzten, meinetwegen dem vierten den Browser wieder schließenw will, funktioniert das nicht.
Process browserProcess = Runtime.getRuntime().exec(browseroeffnen);
browserProcess.destry funktioniert dann leider nicht...
Gibts dazu eine Alternative?


----------

