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