Php-pdf图像预览代码


Php pdf image preview code

我尝试生成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]"添加到已编辑的文件名中。

祝你好运!