我尝试生成php代码,以便预览pdf文件中的图像。这是我的密码。有一个错误,但我不明白它在哪里。如果有任何帮助,我将不胜感激。非常感谢。
<?php
//Get Menu Bar
include('navigate.php');
?>
<table cellspacing="4" width=100%><tr><?php if(!$vol){ ?><td bgcolor="eeeeee" width="50%" valign="top">
<h3 style=" text-shadow:#003">Latest News:</h3>
<?php
$latest=mysql_query("select * from articles ORDER BY id DESC LIMIT 1", $link);
while ($article = mysql_fetch_array($latest)) {
$thevolume= $article['volume'];
$title= $article['title'];
$author= $article['author_main'];
$abstract= $article['abstract'];
$pdf= $article['pdf'];
$im = new imagick('pdf');
$im->setImageFormat('jpg');
?>
<a href="<?php echo $pdf; ?> "PDF: ?php echo "$title - $author"; ?>
<img src="<?php echo $im; ?> " WIDTH="98%" border="1" title="<?php echo "$title - $author"; ?> " caption="Click here to open PDF" />
</a>
您必须将PDF文件的路径作为参数传递,而不仅仅是字符串"PDF":http://php.net/imagick.construct
如果$article['pdf']包含它,则必须使用:
$im = new imagick(realpath($pdf) . '[0]');
$im仍然是一个包含imagick对象实例的资源,而不是图像或pdf文档本身,所以你必须这样做才能在HTML中内联图像(如果你想使用JPEG,我会使用PNG):
<img src="data:image/jpg;base64,<?php
echo base64_encode($im->getImageBlob());
?> " WIDTH="98%" border="1" title="<?php
echo htmlspecialchars("$title - $author");
?> " caption="Click here to open PDF" />
注意htmlspecialchars的用法(http://php.net/htmlspecialchars)将字符串输出到navigator和getImageBlob(http://php.net/imagick.getimageblob)来获取图像数据(如果可用),最后我将用base64对其进行编码,以将其内联到HTML文档中。
如果你想链接到图像的缓存版本,你必须将其保存在一个临时文件中,或者创建另一个PHP脚本来从PDF文件生成图像。
致问候,
编辑1:如何创建JPEG缩略图,来自PHP手册:
您应该阅读以下内容:http://php.net/imagick.setimageformat#89210
这个例子将帮助您:
// convert to JPEG
$im->setImageColorspace(255);
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setCompressionQuality(60);
$im->setImageFormat('jpeg');
也许你会希望缩小图像大小:
$im->resizeImage(290, 375, imagick::FILTER_LANCZOS, 1);
请记住导入页码(以0开头,而不是1),并将"[0]"添加到已编辑的文件名中。
祝你好运!