gpt4 book ai didi

php - 在 PHP 中创建 PDF 缩略图并缓存它

转载 作者:行者123 更新时间:2023-12-04 04:17:45 27 4
gpt4 key购买 nike

我正在使用基于 PHP 的通用 CMS,我想创建一个脚本来读取 pdf 创建的缩略图并将其缓存。有很多不同的答案,我确实在使用不同版本的 imagick 时遇到了一些问题,但这是对我有用的脚本。

有些人可能会发现它很有用,如果它被优化了,也许有人可以建议我?

<?php

$loc = *the file location*;
$pdf = *the file name*;
$format = "jpg";
$dest = "$loc$pdf.$format";

if (file_exists($dest))
{
$im = new imagick();
$im->readImage($dest);
header( "Content-Type: image/jpg" );
echo $im;
exit;
}
else
{
$im = new imagick($loc.$pdf.'[0]');
$im->setImageFormat($format);

$width = $im->getImageheight();
$im->cropImage($width, $width, 0, 0);
$im->scaleImage(110, 167, true);

$im->writeImage($dest);

header( "Content-Type: image/jpg" );
echo $im;
exit;
}

?>

最佳答案

利用 PHP 和 ImageMagick 创建 PDF 缩略图

http://stormwarestudios.com/articles/leverage-php-imagemagick-create-pdf-thumbnails/

在本文中,我们讨论了使用 PHP 和 ImageMagick 从给定的 PDF 生成缩略图,将它们存储在临时(或“缓存”)目录中,并将它们提供给网络。

我们最近的一位客户要求显示通过我们为他们部署的 Joomla CMS 发布的 PDF 缩略图。

要求相当简单,但执行起来有点复杂。在安装 ImageMagick、ImageMagick PHP 绑定(bind)(顺便说一句,它不起作用,并且设计了一个解决方法)并侦查了一些代码之后,确定了以下解决方案:

<?php
function thumbPdf($pdf, $width)
{
try
{
$tmp = 'tmp';
$format = "png";
$source = $pdf.'[0]';
$dest = "$tmp/$pdf.$format";

if (!file_exists($dest))
{
$exec = "convert -scale $width $source $dest";
exec($exec);
}

$im = new Imagick($dest);
header("Content-Type:".$im->getFormat());
echo $im;
}
catch(Exception $e)
{
echo $e->getMessage();
}
}

$file = $_GET['pdf'];
$size = $_GET['size'];
if ($file && $size)
{
thumbPdf($file, $size);
}
?>

以上代码假定您已经为临时目录提供了适当的权限(通常是 chmod 755 或 chmod 777,取决于您的勇气水平),并且您已经将以上代码片段保存在一个名为 thumbPdf.php 的文件中,并将其放置在您的网络服务器上可见的位置。

从 GET 获取参数后,代码检查目标临时目录,如果不存在所需的图像,则使用 ImageMagick 的转换程序生成 PDF 缩略图,缩小到适当的比例,并将图像保存在临时目录。最后,它将缩略图重新加载到 ImageMagick PHP 对象中,并将内容输出到浏览器。

调用上面的代码相当容易;只需从图像标记内部调用 PHP 脚本,如下所示:

<img src="/path/to/thumbPdf.php?pdf=your.pdf&size=200" />

上面的代码将从“your.pdf”的第一页生成一个缩略图,大小为 200 像素宽和适当比例的高度。

祝您好运,网站管理员工作愉快!

关于php - 在 PHP 中创建 PDF 缩略图并缓存它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com