我尝试生成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>
答案 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文件生成图像。
致以最诚挚的问候,
您应该阅读: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]”添加到已编辑的文件名中。
祝你好运!