php 实现文件缩略图,php – Concrete5:将文件缩略图设置为生成的图像(例如,用于PDF)...

这篇博客介绍了如何在Concrete5 CMS中创建一个新的缩略图类型用于PDF文件,并详细阐述了通过监听'on_file_version_add'事件,在后台自动处理PDF文件生成200x200像素的缩略图的过程。涉及到的技术包括文件处理、事件监听和Ghostscript的使用。
摘要由CSDN通过智能技术生成

最后,我是这样做的.

我开始在我的包的控制器的configure方法中创建一个新的缩略图类型,如下所示:

use Concrete\Core\File\Image\Thumbnail\Type\Type;

...

public function configure($pkg) {

...

$thumbnailType = new Type();

$thumbnailType->setName(tc('ThumbnailTypeName', 'PDF Thumbnails'));

$thumbnailType->setHandle('pdfthumbnails');

$thumbnailType->setWidth(200);

$thumbnailType->setHeight(200);

$thumbnailType->save();

}

然后我创建了一个类mypackage / src / document_processing / pdfthumbnails.php,其中包含以下内容:

namespace Concrete\Package\Mypackage\Src\DocumentProcessing;

use Core;

use File;

use Concrete\Core\File\Image\Thumbnail\Type\Type;

class Pdfthumbnails {

public function processPDFThumbnails($fv) {

$fi = Core::make('helper/file');

$fvObj = $fv->getFileVersionObject();

$ext = $fi->getExtension($fvObj->getFilename());

$file = $fvObj->getFile();

if ($ext == 'pdf') {

$type = Type::getByHandle('pdfthumbnails');

$basetype = $type->getBaseVersion();

$thumbpath = $basetype->getFilePath($fvObj);

$fsl = $file->getFileStorageLocationObject()->getFileSystemObject();

$fre = $fvObj->getFileResource();

// this requires sufficient permissions..

// depending on your setup, reconsider 0777

mkdir('application/files'.dirname($thumbpath), 0777, true);

exec('gs -o application/files'.escapeshellarg($thumbpath).' -dPDFFitPage -sDEVICE=png16m -g200x200 -dLastPage=1 -f application/files/'.escapeshellarg($fre->getPath()));

}

}

}

然后我迷上了我的包的控制器中的on_file_version_add事件:

use Concrete\Package\Mypackage\Src\DocumentProcessing\Pdfthumbnails;

...

public function on_start() {

Events::addListener('on_file_version_add', array(new Pdfthumbnails(), 'processPDFThumbnails'));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值