2016-05-15 8 views
0

exec()関数を使用して、ファイル名にスペースを含むpdfファイルを変換する方法。例えばのためにPHPのexec()Windowsのファイル名にスペースを含むjpgに変換する

: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"); 

?> 

をファイルへのファイル1.pdf私は次のエラーを取得しています:

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

pdfファイルを変換する[PHPでJPGイメージにPDFに変換](http://stackoverflow.com/questions/13600598/convert-pdf-to-jpg-image-with-php) – Nasreddine

+0

の可能性の重複ファイル名にスペースを入れずに私のために働いています。ファイル名にスペースが含まれているファイルに問題があります。 –

+0

リンクされた質問には、ファイル名を引用符で囲むという解決策もあります。 – Nasreddine

答えて

3

スペースなし引数/ファイル名で:ファイル内

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

まだファイル名のスペースを含むpdfファイルは変換されません。 –

+0

それはすべきです。質問を編集して、PHPを使用しているOS(Linux、Windows?)、および特定のエラーを指定してください。 (あなた* * [ログエラー](http://stackoverflow.com/questions/3531703/how-to-log-errors-and-warnings-into-a-file)、右?) –

+0

私はそうではありませんロギングエラー。私はWindows上でPHPを使用しています。 –

1

は(二重引用符で引数(ファイル名)を置くようにしてくださいこれはあなたがバックスラッシュでエスケープする必要があり):

囲むように
exec ("convert \"$pdf_first_page\" \"$jpg\""); 

二重引用符で渡されたシェルCOMANDの引数は、一般的に良い練習 です - でも、あなたはこのように、escapeshellarg()を通じて引数を渡す必要が

+0

まだファイル名のスペースを含むpdfファイルは変換されません。 –

+0

私の答えで提案されたように最後の行が変更されたコードが自分のマシン(Debian)上で正常に実行されます。期待どおりに 'file1.jpg'を出力します。 – Reto

+0

convert.exe:イメージ 'file 1.pdf'を開くことができません:このようなファイルまたはディレクトリはありません@ error/blob.c/OpenBlob/2702。 convert.exe:画像が 'file 1.jpg '@ error/convert.c/ConvertImageCommand/3257に定義されていません。 –

0

スペースLinuxの名前はスペースの前にエスケープ文字\でエスケープする必要があります。以下は例です。

file\ 1.pdf 
関連する問題