我需要将上传的pdf转换为一个长png图像。 简单的图像(例如jpg)工作正常,如果我只转换最后一页(默认),也可以使用pdf。但是,当尝试将pdf的所有页面转换为一个png时,它会生成一个长黑图像或带有白色条带的长黑图像。
if ($file === null || !($file instanceof UploadedFile)) {
throw new \LogicException('No uploadable file found');
}
$tmpFile = $file->getRealPath();
try {
$im = new \imagick();
$im->pingimage($tmpFile);
$im->setresolution(140, 140);
$im->readimage($tmpFile);
switch ($file->getMimeType()) {
case 'application/pdf':
$im->resetIterator();
$ima = $im->appendImages(true);
$ima->setImageFormat('png');
$ima->writeImage();
$ima->clear();
$ima->destroy();
break;
default:
break; //return new Response('error');
}
答案 0 :(得分:0)
我发现了问题..可能有人需要这个。 我不知道为什么以及如何但pingimage()方法导致了问题。非常有趣的imo,它实际上没有任何问题,如果(默认情况下)我只想转换pdf的一页或不转换多页图像。一旦我删除了该方法,生成的图像就是正确的。 还要注意我使用的是Windows 8并且没有在linux上试过它。愿这个方法在linux上没有任何问题。