如何解决如何从Laravel中的PDF上传生成缩略图
我正在尝试生成在laravel中上传的PDF的缩略图,该缩略图应该是PDF的第一页。现在,我正在手动上传图像,以使缩略图像这样:
if (request()->has('pdf')) {
$pdfuploaded = request()->file('pdf');
$pdfname = $request->book_name . time() . '.' . $pdfuploaded->getClientOriginalExtension();
$pdfpath = public_path('/uploads/pdf');
$pdfuploaded->move($pdfpath,$pdfname);
$book->book_file = '/uploads/pdf/' . $pdfname;
$pdf = $book->book_file;
}
if (request()->has('cover')) {
$coveruploaded = request()->file('cover');
$covername = $request->book_name . time() . '.' . $coveruploaded->getClientOriginalExtension();
$coverpath = public_path('/uploads/cover');
$coveruploaded->move($coverpath,$covername);
$book->card_image = '/uploads/cover/' . $covername;
}
输入许多我想自动生成缩略图的数据时,这可能很乏味。我搜索了许多答案,但找不到特定的Laravel。我尝试使用ImageMagic和Ghost脚本,但是找不到解决方案和适当的实现角色。
解决方法
对不起,还不能发表评论! 上传文件时,您可以使用spatie/pdf-to-image将首页解析为图片,并将其存储在存储器中,并将链接保存在数据库中。
首先,您需要安装和配置php-imagick
和ghostscript
。有关ghostscript
安装的问题,可以参考this。然后添加软件包composer require spatie/pdf-to-image
。
根据您的代码示例:
if (request()->has('pdf')) {
$pdfuploaded = request()->file('pdf');
$pdfname = $request->book_name . time() . '.' . $pdfuploaded->getClientOriginalExtension();
$pdfpath = public_path('/uploads/pdf');
$pdfuploaded->move($pdfpath,$pdfname);
$book->book_file = '/uploads/pdf/' . $pdfname;
$pdf = $book->book_file;
$pdfO = new Spatie\PdfToImage\Pdf($pdfpath . '/' . $pdfname);
$thumbnailPath = public_path('/uploads/thumbnails');
$thumbnail = $pdfO->setPage(1)
->setOutputFormat('png')
->saveImage($thumbnailPath . '/' . 'YourFileName.png');
// This is where you save the cover path to your database.
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。