ps in pdf umwandeln

Status
Nicht offen für weitere Antworten.

magic_halli

Bekanntes Mitglied
Hi,

ich habe in einem Verzeichnis *.ps-Dateien. Diese möchte ich in *.pdf-Dateien umwandeln. (Ich arbeite unter Linux - Fedora Core4 und Eclipse)
Hier gibt es eine Art Batchdatei "ps2pdf" (ist im Ghostscript-Paket enthalten) - diese wandelt mir ps-Dateien in pdf´s um.
Ein Verzeichnis nach Dateien durchsuchen ist kein Problem - hab ich hier gelernt :### :wink:

Nur wie könnte ich die ps´s (evtl. mittels der Batchdatei ps2pdf) in pdf´s umwandeln???


Danke.
 

foobar

Top Contributor
Du hast die Lösung doch schon selber gefunden. Ruf per Runtime.ecec psdpf auf und übergib ihm die Liste Postscripts.
 

magic_halli

Bekanntes Mitglied
Danke für den Tip mit Runtime.exec...

Ich probiere nun schon ne Ewigkeit daran herum. Bisher hab ich´s nur geschafft, ein Programm aufzurufen und zu starten.
Code:
Runtime rt1 = Runtime.getRuntime();
rt1.exec("/usr/bin/gnome-terminal");     //Terminal nur testhalber aufgerufen

Ich will aber, dass ein Programm (/usr/bin/ps2pdf) auf Dateien in einem Verzeichnis angewendet wird.
Jetzt weiß ich nicht so recht weiter - trotz API :?

Ich habe mir schon eine ArrayList mit allen Dateien erstellt, auf die dieses Programm (ps2pdf) angewendet werden soll. Nur weiß ich nicht, wie ich syntaktisch dieses Programm auf jedes einzelne File ausführe! (Das auslesen der Files aus der ArrayList ist nicht das Problem).

Kann mir zumindest jemand einen Tip geben?

Danke.
 

foobar

Top Contributor
Du mußt jedes ps einzeln an psdpdf übergeben d.h. du mußt über die Arraylist iterieren und dann für jedes Item Runtime.exec aufrufen. Du mußt dann eben nur darauf achten, daß die Pfade stimmen.
 

magic_halli

Bekanntes Mitglied
So, hab jetzt folgendes gemacht:
Code:
...
String path = curSession.GetCurrentDirectory();
Runtime rt1 = Runtime.getRuntime();

for(int i = 0; i < matchesPS.size() ;i++){	
		psName = path + matchesPS.get(i).toString();
		[i]rt1.exec("/usr/bin/ps2pdf");[/i]
}
In psName steht der komplette Pfad inkl. Dateiname. Aber mein rt1.exec nimmt nicht 2 Strings als Argumente - da meckert er!
Wo kann ich denn nun hier meinen psName mit unterbringen???
 

hupfdule

Top Contributor
magic_halli hat gesagt.:
In psName steht der komplette Pfad inkl. Dateiname. Aber mein rt1.exec nimmt nicht 2 Strings als Argumente - da meckert er!
Wo kann ich denn nun hier meinen psName mit unterbringen???

Code:
public Process exec(String[] cmdarray)
             throws IOException
"Executes the specified command and arguments in a separate process."

Steht in der API.
 

muckelzwerg

Bekanntes Mitglied
Innerhalb des ersten Strings.
Du musst den kompletten Aufruf in den command String packen.
Exec lässt da dann einen Tokenizer drüberlaufen und leitet den Systemaufruf ein.
Du kannst auch exec(String[] cmdarray) verwenden, und die Parameter schon als
Tokens in das Array legen.
Hab ich so noch nicht eingesetzt, spart verm. Zeit, weil der Tokenizer wegfällt ?

-- -- muckelzwerg
 

magic_halli

Bekanntes Mitglied
So, ich führe nun das Runtime-Command wie folgt aus:
Code:
...
String path = curSession.GetCurrentDirectory();   //aktuelles Arbeitsverzeichnis
Runtime rt1 = Runtime.getRuntime();

for(int i = 0; i < matchesPS.size() ;i++){   
      psName = path + matchesPS.get(i).toString();
     rt1.exec("/usr/bin/ps2pdf " + psName);
Somit erhaltet ich in rt1.exec, wenn man diesen STring ausgibt, ein Kommando, das da lautet: /usr/bin/ps2pdf /<Verzeichnis>/<Name>.ps.

Wie zu erkennen ist, arbeite ich unter Unix. Jetzt habe ich das obige Kommando einfach mal in die Konsole (im root-Verzeichnis) eingegeben und ausgeführt und da passiert gar nix (kein Fehler, keine pdf-Erstellung etc.).
Wenn ich nun aber in der Konsole in das <Verzeichnis> wechsel und dort dann einfach eingebe /usr/bin/ps2pdf <Name>.ps, dann bekomme ich ein pdf erstellt. Also heißt das ja für mich, ich kann ps2pdf nur erfolgreich ausführen, wenn dieser Befehl im jeweiligen <Verzeichnis> auf die *.ps-Datei ausgeführt wird - und nicht von woanders mit den jeweiligen Pfadangaben vornweg!!!
Nur wie bringe ich rt1.exec dazu, erstmal in das <Verzeichnis> zu wechseln und dann erst ps2pdf auf <Name>.ps auszuführen???

Eine Lösung wäre doch sowas wie:
-wechsel ins aktuelle Arbeitsverzeichnis und
-führe erst dann rt1.exec("/usr/bin/ps2pdf " + "<Name>.ps") aus ???

Mir ist nur nicht klar, wie ich sowas in Java veranlassen kann (speziell eben den Befehl erst im akt. Arbeitsverzeichnis ausführen).
 

magic_halli

Bekanntes Mitglied
Juhu, ich hab die Lösung gefunden... in der API heißt es:
exec(String command, String[] envp, File dir)
Executes the specified string command in a separate process with the specified environment and working directory.


Also ergibt sich daraus für mich:
Code:
ArrayList matchesPS = listPS(curSession);
String path = curSession.GetCurrentDirectory();
String psName = null;
File f = new File(path);

try{
    Runtime rt1 = Runtime.getRuntime();
    for(int i = 0; i < matchesPS.size() ;i++){	
		psName = matchesPS.get(i).toString();
		rt1.exec("/usr/bin/ps2pdf " + psName, null, f);
    }
}
Es lag die ganze Zeit vor meinen Augen und ich hab´s klassisch überlesen, dass man die working directory als File übergeben kann :oops:

Gruß Rico.
 

hupfdule

Top Contributor
magic_halli hat gesagt.:
Also heißt das ja für mich, ich kann ps2pdf nur erfolgreich ausführen, wenn dieser Befehl im jeweiligen <Verzeichnis> auf die *.ps-Datei ausgeführt wird - und nicht von woanders mit den jeweiligen Pfadangaben vornweg!!!
Nein, das pdf wird in dem Fall im aktuellen Verzeichnis abgelegt. Du kannst ps2pdf aber auch angeben, wo die PDF Datei liegen soll. Sieh mal in die manpage.
 

muckelzwerg

Bekanntes Mitglied
Wenn die Aufrufe komplexer werden, kannst Du evtl auch Skripte verwenden.
Macht ja auch nicht soo viel Spaß jedesmal neu zu kompilieren, weil man schnell noch einen Systembefehl dazuhacken will.

@all :
Gibt es da eigentlich eine gängige Lösung für, um wenigstens beim Systemwechsel funktional zu bleiben ?
Klar kann man die Umgebung testen und dann zwischen "linux-script" oder "batch-datei" wechseln.
Aber vielleicht kennt ja jemand was "besseres" ?

-- -- muckelzwerg
 

foobar

Top Contributor
Gibt es da eigentlich eine gängige Lösung für, um wenigstens beim Systemwechsel funktional zu bleiben ?
Klar kann man die Umgebung testen und dann zwischen "linux-script" oder "batch-datei" wechseln.
Aber vielleicht kennt ja jemand was "besseres" ?
Die beste Lösung ist immer noch überhaupt keine betriebssystemspezifischen Kommandos zu verwenden. Wenn schon nativ dann über JNI, aber produktiv sollte man nicht über Java ein Shellscript oder eine batch aufrufen.
 

magic_halli

Bekanntes Mitglied
Wenn wir schonmal bei betriebssystemspezifisch sind... Ich möchte, je nachdem auf welchem System das kleine Programm läuft (Windows oder Unix), eine unterschiedliche Batchdatei verwenden. Habe zur Unterscheidung dessen mal was probiert (laut Buch):
Code:
String osName = System.getProperty("os.Name");
osName = osName.toLowerCase();
if(osName.indexOf("windows") != -1){
     //benutze Batchdatei für Windows
}
else{
     //benutze Batchdatei für Unix
}

Wie müsste denn aber für Unix/Linux der osName.indexOf(...) lauten??? Hab "Unix" und "Linux" reingeschrieben, aber irgendwie geht das nicht!
Somit hätte ich dann nämlich für die unterschiedlichen Plattformen jeweils andere Kommandos zur Verfügung...


Gruß.
 

muckelzwerg

Bekanntes Mitglied
@ foobar :
Hm, vielleicht versteh ich das falsch, wo ist da der Vorteil ?
Kannst Du etwas genauer erklären, wie Du das machen würdest ?
Momentan habe ich tatsächlich verschiedene "Bachtdateien" im Einsatz
und starte die über einen Systemaufruf.
Der Systemaufruf kommt aus der config-Datei des Programs.
(damit entfällt das switching, und das hardcodieren der Scripte)
Es geht hier um so Sachen wie "Firefox neustarten" etc.
Willst Du das switching ins native verlagern, oder wie muss ich mir das vorstellen ?

-- -- muckelzwerg
 

foobar

Top Contributor
Ich würde überhaupt nicht mit Runtime.exec arbeiten sondern mir Libs suchen, die das können was ich brauche. Um den Firefox zu starten kannst du z.b. auf Jdic zurück greifen, da gibt es ein Projekt mit dem du die Standardprogramme wie Mailclient, Browser etc. starten kannst.
Und um ps nach pdf zu wandeln gibt es bestimmt auch eine Lib. Vielleicht kann man das durch fop von apache lösen.
 

muckelzwerg

Bekanntes Mitglied
Hm, jdic reicht mir vom Umfang her leider nicht.
Die Scripte enthalten diverse Programmaufrufe, die über jdic nicht gehen.
Firefox ist nur ein Beispiel, ein Skript, wie ich es brauche kann so ziemlich jeden Befehl enthalten vom Starten und Beenden von Diensten,
bis zum grep, setserial, shutdown oder was auch immer.
Zudem ändert sich da immer mal wieder etwas im Skript,
das Javapogramm soll also gar nicht genau wissen was da alles nötig ist.Für die Trennung müsste ich dann ja zusätzliche Programme schreiben die z.B. jdic verwenden.

(ps nach pdf brauch ich nicht, das war der Threadstarter)

-- -- muckelzwerg
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
R int in Ascci umwandeln Java Basics - Anfänger-Themen 7
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
S JAR zu EXE umwandeln Java Basics - Anfänger-Themen 22
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
C Rekursive Methode in Interative Methode umwandeln Java Basics - Anfänger-Themen 17
J Dezimalzahl in Bruch Umwandeln und Kürzen Java Basics - Anfänger-Themen 8
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
S String umwandeln Java Basics - Anfänger-Themen 6
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
O von Basis 10 in Basis x umwandeln Java Basics - Anfänger-Themen 5
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
I JSON Datei in Array umwandeln Java Basics - Anfänger-Themen 1
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
S \n nicht in Zeilenumbruch umwandeln Java Basics - Anfänger-Themen 5
W Dezimalzahlen in Binärzahl umwandeln. Wie möglich ? Java Basics - Anfänger-Themen 9
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
P 32 Bit Binärzahl Umwandeln in Dezimal Java Basics - Anfänger-Themen 8
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
geekex Double zu String umwandeln in einer Methode Java Basics - Anfänger-Themen 28
MiMa String in Gross und Kleinbuchstaben umwandeln Java Basics - Anfänger-Themen 10
H JCalendar in String umwandeln Java Basics - Anfänger-Themen 9
P Wie kann ich mein Programm zu einer App umwandeln? Java Basics - Anfänger-Themen 4
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
L String in Binär umwandeln Java Basics - Anfänger-Themen 4
G .java in .jar umwandeln Eclipse Java Basics - Anfänger-Themen 12
W String auf char[] umwandeln Java Basics - Anfänger-Themen 3
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
C Array in String umwandeln Java Basics - Anfänger-Themen 5
K Methoden Zahlensysteme umwandeln mittels Rekursion Java Basics - Anfänger-Themen 5
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
G Bilddaten in Matrix umwandeln Java Basics - Anfänger-Themen 1
L Java CMD Console in String umwandeln? Java Basics - Anfänger-Themen 2
D String zu int umwandeln Java Basics - Anfänger-Themen 2
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
K Wie .java in .jar umwandeln? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
G double in float umwandeln Java Basics - Anfänger-Themen 2
M csv in xlsx umwandeln Java Basics - Anfänger-Themen 7
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
D String in FileInputStream umwandeln Java Basics - Anfänger-Themen 2
J Mit Eclipse PLZ in Koordinaten umwandeln und ausgeben Java Basics - Anfänger-Themen 3
A Erste Schritte Buchstaben in zahlen umwandeln Java Basics - Anfänger-Themen 4
T opengl Dreick in einen Würfel umwandeln Java Basics - Anfänger-Themen 0
S Groß bzw. Klein Buchstaben umwandeln (gemischt) Java Basics - Anfänger-Themen 1
D Methode mit mehren Rekursiven aufrufen in Methode mit einem Rekursiven Aufruf umwandeln! Java Basics - Anfänger-Themen 1
V String in Byte umwandeln Java Basics - Anfänger-Themen 11
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
N Unsymmetrisches mehrdimensionales Array in eindimensionales umwandeln Java Basics - Anfänger-Themen 2
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
W Umwandeln von Dezimal in Dual - Ausgabe incl. Rechenschritte Java Basics - Anfänger-Themen 11
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
J array in String umwandeln Java Basics - Anfänger-Themen 1
J array in String umwandeln Java Basics - Anfänger-Themen 3
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
1 Binärdarstellung (als String) in Dezimalzahl umwandeln Java Basics - Anfänger-Themen 8
J subStrings zu int Array umwandeln? Java Basics - Anfänger-Themen 19
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
C '.java' in '.exe' umwandeln. Java Basics - Anfänger-Themen 2
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
P Datum umwandeln Java Basics - Anfänger-Themen 5
P [B@6a435f in normalen Zahlen umwandeln, wie? Java Basics - Anfänger-Themen 14
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
J C++ Bitmanipulations-Programm in Java umwandeln Java Basics - Anfänger-Themen 10
B Zahl Basis 10 in DualDezimal 16bit umwandeln Java Basics - Anfänger-Themen 8
X Datentypen Int oder String in Bits/Bytes umwandeln Java Basics - Anfänger-Themen 10
W Datentypen String in Quellcode umwandeln Java Basics - Anfänger-Themen 25
J int mit führenden Nullen in String umwandeln Java Basics - Anfänger-Themen 5
B datentyp in binär umwandeln Java Basics - Anfänger-Themen 5
A String in Double umwandeln mit Tests Java Basics - Anfänger-Themen 3
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
S Datumsstring in datetime umwandeln Java Basics - Anfänger-Themen 2
T int als 100% umwandeln? Java Basics - Anfänger-Themen 7
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8
M String in Datum umwandeln mit SimpleDateFormat Java Basics - Anfänger-Themen 3
A String(Ascii ) in String umwandeln Java Basics - Anfänger-Themen 3
walker23m C++ Listen iteratoren in Java umwandeln Java Basics - Anfänger-Themen 3
V Zahl zu Text Umwandeln Java Basics - Anfänger-Themen 52
E Object in eigene Klasse umwandeln? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben