PHP无法打开ghostscript生成的文件

时间:2014-12-11 11:06:43

标签: php pdf ghostscript

我有一个小的php函数,它使用ghostscript获取多页pdf并将其转换为多个png。脚本的这一部分工作,我可以运行它并检查图像文件夹,它们都在那里。

脚本的下一部分调整了ghostcript生成的png的大小。但是,任何在php中使用这些png的尝试都会导致“无法打开流:没有这样的文件或目录”

此外,如果将生成的png之一复制到另一个文件夹甚至同一个文件夹,它将变得可读。这让我相信ghostscript生成的图像可能具有不正确的权限。但是当我运行我的脚本来检查权限以及文件是否存在时。两者都返回假。

以下是转换脚本:

    <?php
 //Upload pdf convert to pngs in the folder jpgs/originals
$uploaddir = 'uploadtemp/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<p>";
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {

    exec('bin\gswin32c.exe -o jpgs\originals\%3d.png -sDEVICE=png16m -r150 uploadtemp\input.pdf');
    unlink('uploadtemp\input.pdf');
    header('Location: main.php');
    } else {
    echo "Upload failed";
}       
?>

以下是试图调用现在生成的pngs的脚本:

 <?php
$filename = "jpgs/originals/1.png";

    if (is_writable($filename)) {
        echo 'The file is writable';
    } else {
        echo 'The file is not writable';
    }

    if (file_exists($filename)) {
        echo "The file $filename exists";
    } else {
        echo "The file $filename does not exist";
?>

即使我可以看到文件夹中生成的文件

,两个if语句都返回false

1 个答案:

答案 0 :(得分:0)

这肯定是一个奇怪的问题,当运行ghostscript参数时:jpgs\originals\%3d.png它会创建在数字前面有2个空格的文件。所以调用文件2.png不起作用,因为它不存在,但如果你调用[space] [space] 2.png它的工作原理!当windows复制文件时,它必须删除额外的空格或其他东西。