我设置了一个简单的脚本来检索pdf封面,将其保存并显示在书名旁边。 有很多书,例如一百本书,并且脚本在某个时候出现了错误消息:
Fatal error: Uncaught ImagickException: Postscript delegate failed `[ghostscript library 9.25] -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 '-r72x72' -dFirstPage=1 -dLastPage=1 '-sOutputFile=/tmp/magick-27554Ici68mMMGVSY%d' '-f/tmp/magick-27554GJYgTikvACHZ' '-f/tmp/magick-27554BNiFmZKXjmw0'': **** Error reading a content stream.
The page may be incomplete. Output may be incorrect. Error: /typecheck in --runpdf-- Operand stack: --dict:4/13(L)-- --dict:5/14(L)-- --dict:5/14(L)-- 61 15898520 61 0 --nostringval-- Contents --dict:9/9(L)-- false --nostringval-- --nostringval-- --nostringval--
Execution stack: %interp_exit .runexec2 --nostringval-- runpdf --nostringval-- 2 %stopped_push --nostringval-- runpdf runpdf false 1 %stopped_push 2047 1 3 %oparray_pop 2046 1 3 %oparray_pop 2026 1 3 %oparray_pop in /var/www/website/public_html/list.php on line 28
以下是印刷书籍和封面的代码,这似乎很有效:
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$book = $row["bookname"];
$path = $host."/libreria/".$row["bookname"];
$truepath = basename($path);
$coverName = $truepath."-cover.png";
$fileArr = explode('.',$book);
$fileExt = strtolower(end($fileArr));
if ($fileExt == "pdf") {
$im = new imagick($book.'[0]');
$im->setImageFormat('png');
$im->resizeImage(150,200,1,0);
$im->writeImage('/var/www/test1.putmywebsite.online/public_html/libreria/covers/'.$coverName);
echo "<a href='$truepath'>"."<img src='covers/".$coverName."'>".$row["bookname"]."</a><br>";
} else {
echo "<a href='$truepath'>".$row["bookname"]."</a><br>";
$bookArray[] = $row["bookname"];
}
PHP引擎的执行时间为300秒,似乎不是超时问题。 该错误消息对我来说是很隐秘的。我遇到致命异常的文件起作用,尝试在脚本的本地版本上使用,甚至通过将其删除也再次遇到相同的错误。 有什么建议吗? 预先感谢您的任何答复或评论:)