PHP exec()将pdf转换为jpg,在Windows上使用文件名中的空格

时间:2016-05-15 20:20:37

标签: php windows

如何使用exec()函数转换其文件名中包含空格的pdf文件。

例如:文件1.pdf到文件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");

?>

我收到以下错误:

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.

3 个答案:

答案 0 :(得分:3)

您需要通过escapeshellarg()传递参数,如下所示:

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

答案 1 :(得分:1)

尝试将参数(文件名)放在双引号中(必须用反斜杠转义):

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

通常用双引号括起传递的shell命令参数   一个好的做法 - 即使是没有空格的参数/文件名

答案 2 :(得分:0)

Linux上的文件名中的空格必须在空格前使用\注释转义字符进行转义。以下是一个例子。

file\ 1.pdf