2016-05-15 12 views
0

Wie konvertiert man PDF-Dateien, die Leerzeichen in ihren Dateinamen enthalten mit der Funktion exec().PHP exec() Konvertieren von PDF in JPG mit Leerzeichen in Dateiname auf Windows

Für zB: Datei 1.pdf Datei 1.jpg

<?php 

$pdf = "file 1.pdf"; 
$pdf_first_page = "file 1.pdf[0]"; 
$jpg = str_replace("pdf", "jpg", $pdf); 
exec ("convert $pdf_first_page $jpg"); 

?> 

ich die folgenden Fehler bekommen:

convert.exe: unable to open image `file 1.pdf': No such file or directory @ error/blob.c/OpenBlob/2702. 
convert.exe: no images defined `file 1.jpg' @ error/convert.c/ConvertImageCommand/3257. 
+0

Mögliches Duplikat [Konvertieren von PDF in JPG-Bild mit PHP] (http://stackoverflow.com/questions/13600598/convert-pdf-to-jpg-image-with-php) – Nasreddine

+0

die pdf-Datei konvertieren ohne Leerzeichen im Dateinamen funktioniert das für mich. Ich habe Probleme mit Dateien, die Platz in ihren Dateinamen enthalten. –

+0

Die verknüpfte Frage bietet auch eine Lösung dafür, den Dateinamen in Anführungszeichen zu setzen – Nasreddine

Antwort

3

Sie müssen die Argumente durch escapeshellarg(), wie dies passieren:

$pdf_escaped = escapeshellarg($pdf_first_page); 
$jpg_escaped = escapeshellarg($jpg); 
exec("convert $pdf_escaped $jpg_escaped"); 
+0

Immer noch konvertiert es PDF-Dateien nicht mit Leerzeichen in ihrem Dateinamen. –

+0

Es sollte. Könnten Sie bitte Ihre Frage bearbeiten, um anzugeben, auf welchem ​​Betriebssystem Sie PHP verwenden (Linux, Windows?) Und welchen spezifischen Fehler Sie bekommen? (Sie * sind * [Logging-Fehler] (http://StackOverflow.com/Questions/3531703/How-to-Log-errors-and-warnings-into-a-file), richtig?) –

+0

Nicht ich bin nicht Protokollfehler. Ich verwende PHP unter Windows. –

1

Versuchen Sie, die Argumente (Dateinamen) in doppelte Anführungszeichen zu setzen (was muss man durch Schrägstriche entkommen):

exec ("convert \"$pdf_first_page\" \"$jpg\""); 

umgeben die übergebenen Shell comand Argumente mit doppelten Anführungszeichen ist im Allgemeinen eine gute Praxis - auch mit Argumenten/Dateinamen ohne Leerzeichen

+0

Dennoch konvertiert es PDF-Dateien nicht mit Leerzeichen im Dateinamen. –

+0

Ihr Code mit der letzten Zeile geändert, wie in meiner Antwort vorgeschlagen, läuft erfolgreich auf meinem Rechner (Debian). Es gibt 'file 1.jpg' wie erwartet aus. – Reto

+0

convert.exe: Bild kann nicht geöffnet werden 'Datei 1.pdf ': Keine solche Datei oder Verzeichnis @ error/blob.c/OpenBlob/2702. convert.exe: Keine Bilder definiert 'Datei 1.jpg '@ Fehler/convert.c/ConvertImageCommand/3257. –

0

Spaces in Datei Namen unter Linux müssen mit \ Escape-Zeichen vor dem Leerzeichen Escape sein. Unten ist ein Beispiel.

file\ 1.pdf