微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Laravel中的PDF上传生成缩略图

如何解决如何从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-imagickghostscript。有关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 举报,一经查实,本站将立刻删除。