Php pdf图像预览代码

时间:2015-02-26 07:45:57

标签: php pdf

我尝试生成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>

1 个答案:

答案 0 :(得分:1)

您必须将参数作为参数传递给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:如何从PHP手册创建JPEG缩略图:

您应该阅读: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]”添加到已编辑的文件名中。

祝你好运!