[英]Converting PDF to image with ImageMagick
我想通过PHP将下载的pdf文件转换为图像。 为此,我正在使用Imagemagick扩展PHP。 问题是,如果我通过file_get_contents函数下载pdf文件,我无法使用此下载内容创建Imagemagic对象。 这是代码:
<?php
$url = "pdf webaddress";
$pdfData = file_get_contents($url);
try
{
$img = new Imagick($pdfData);
$img->setResolution(480,640);
$img->setImageFormat("jpeg");
$img->writeImage("test.jpeg");
}
catch(Exception $e)
{
echo $e->getMessage();
}
?>
我收到以下错误:
无法读取文件:%PDF-1.6%גדֿ:7 0 obj <> endobj 86 0 obj <> / Filter / FlateDecode / ID [] / Index [7 146] / Info 6 0 R / Length 257 / Prev 592751 /根8 0 R /尺寸153 /类型/外部参照/ W [1 3 1] >>流hbbd
`b
ׁ'6“9DעƒH
现在,如果我读入本地存储的pdf文件,一切正常。 代码是:
$image = "output.png";
$img = new Imagick("path to pdf file");
$img->setResolution(480,640);
$img->setImageFormat("jpeg");
$img->writeImage("test.jpeg");
任何建议,帮助表示赞赏。
在ImageMagick PHP扩展文档页面中 , Imagick
构造函数需要一个文件名参数,可以是本地文件或 URL。 :
路径可以包含文件名的通配符,也可以是URL。
您应该直接传递URL,而不使用file_get_contents
,PHP文件流非常强大。
另一个解决方案是在本地存储文件(请参阅tempnam()
和file_put_contents
),但如果不将其用于除将其转换为图像之外的其他任何内容,那么它就没用了:
$pdfUrl = "...";
$tmpFileName = tempnam(sys_get_temp_dir(), "pdf");
file_put_contents($tmpFileName, file_get_contents($pdfUrl));
// Do your ImageMagick job
unlink($tmpFileName);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.