0

我正在创建一个 cron 作业,在该作业中我将文件从一个目录复制到另一个目录。cron 作业工作正常,它将文件复制到导入目录。导入目录的结构是这样的。

import
      folder1
          pdf_file1
      folder2
          pdf_file2

我正在尝试为复制到文件夹的每个 pdf 文件创建一个缩略图,我安装了 ImageMagik,我的 php 代码创建一个缩略图是

 if ($preview != "") {
    $copy_res = ftp_get("files/upload/" . $ftp_upload["path"] . "/" . $preview, "files/import/" . $ftp_upload["preview"] . "/" . $preview);
    $md5_checksum = md5("files/import/" . $ftp_upload["path"] . "/" . $preview);
 } else {
         //$pdf_file = 'files/import/folder1/pdf_file1';
         $pdf_file = 'files/import/' . $ftp_upload["path"]."/".$filename_new;
         if (file_exists($pdf_file)){
             echo 'I am here';
             exec("convert -density 300 " . $pdf_file . "[0]" . $filename_new . ".jpg");
         }
 }

当我运行代码时,它来到 else 语句并回显该行,但它不执行 exec 命令。我从命令提示符中检查了我导航到的转换命令

 C:\wamp\www\project\files\import\folder1 

然后我运行这个命令

 exec("convert -density 300  test.pdf[0]  test.jpg");

在命令提示符下它可以工作,但在我的代码中它不起作用。路径有问题吗?因为当我尝试为其创建缩略图时,该文件已被复制。

ImageMagik 安装在

 C:\Program Files(x86)\ImageMagik

任何想法我做错了什么?还有其他更快的方法来为 pdf 创建缩略图吗?

提前致谢

4

2 回答 2

1

我现在编写代码,将代码与 exec() 分开,以便您可以显示发送给 Imagemagick 的信息。我也会尝试在 exec() 之外设置文件名

$input = $pdf_file . "[0]";
$output = $filename_new . ".jpg"
$cmd = " -density 300 $input -thumbnail 200x300 $output ";
// echo $cmd."<br>";
exec("convert $cmd");

添加了调整大小,但它会保持图像比例 - 如果您需要精确的尺寸,您可以裁剪图像或用颜色填充它。

于 2012-05-04T14:45:39.813 回答
0

似乎缺少一个空格来分隔文件的路径pdf和图像文件的新名称。

exec("convert -density 300 " . $pdf_file . "[0]" . $filename_new . ".jpg");

应该:

exec("convert -density 300 " . $pdf_file . "[0] " . $filename_new . ".jpg");
-----------------------------------------------^
于 2012-05-04T13:30:51.100 回答