首页 > 编程语言 >php pdf转图片列表

php pdf转图片列表

时间:2024-03-15 10:35:23浏览次数:26  
标签:fileSystem fileName pageNumber env 列表 pdf fileUrl php

使用 composer require spatie/pdf-to-image
服务器需要安装ImageMagick,并且将/etc/ImageMagick-6/policy.xml
找到pdf这一行,注释掉或者增加读、写、编译
 <policy domain="coder" rights="read|write|decode" pattern="PDF" />


public function pdfToImage(RequestInterface $request): ResponseInterface
{
$fileUrl = $request->input('fileUrl');
$client = new Client();
$ossclient = new OssClient(env('accessId'), env('accessSecret'), env('endpoint'));

// 下载PDF文件内容
$response = $client->get($fileUrl);
$pdfContent = (string)$response->getBody();

// 获取存储路径或创建一个Filesystem实例(假设你使用了Flysystem适配器)
$fileSystem = new Filesystem();
$fileName = md5($fileUrl);
$check = BookshelfPdf::where('uuid', $fileName)->pluck('path');
if (count($check) == 0) {
$savePath = "public/pdf/{$fileName}.pdf"; // 替换为实际保存PDF的路径和文件名

// 将PDF内容写入本地文件
$fileSystem->append($savePath, $pdfContent);
$pdf = new Pdf($savePath);
$imageList = [];
foreach (range(1, $pdf->getNumberOfPages()) as $pageNumber) {
$imagePath = "public/images/page_$pageNumber.jpg";
$pdf->setPage($pageNumber)->saveImage($imagePath);
// 将生成的图片路径添加到图片列表
$ossclient->uploadFile(env('bucket'), "upload/pdfToImage/{$fileName}_page_$pageNumber.jpg", $imagePath);
$imageList[] = env('domain') . "/upload/pdfToImage/{$fileName}_page_$pageNumber.jpg";
$fileSystem->delete($imagePath);
BookshelfPdf::create([
'uuid' => $fileName,
'file_url' => $fileUrl,
'path' => env('domain') . "/upload/pdfToImage/{$fileName}_page_$pageNumber.jpg"
]);
}
$fileSystem->delete($savePath);
} else {
$imageList = $check;
}
return $this->response->success("查询成功",$imageList);
}

标签:fileSystem,fileName,pageNumber,env,列表,pdf,fileUrl,php
From: https://www.cnblogs.com/sdfgdrg/p/18074878

相关文章

  • 列表与字典
    字典:#遍历字典内容1class1={'丁一':85,'王二':95,'张三':75,'李四':65,'赵五':55}foriinclass1:#这个i代表的是字典中的键,也就是丁一、王二麻子等print('class1:',i,class1[i]) #遍历字典内容2class1={'丁一':85,......
  • 【专题】2024年母婴营养品行业趋势白皮书报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35371原文出处:拓端数据部落公众号2023年,母婴营养品市场消费意识和需求持续增长,品类与品牌创新步伐加快,市场教育逐渐深化。在多重因素推动下,母婴营养品正步入发展新阶段,有望成为继奶粉之后的母婴市场新领军品类。阅读原文,获取专题报告合集全文,解锁......
  • Python:自动化处理PDF文档集合,提取文献标题、合并文献PDF并生成目录和页码
    Python:自动化处理PDF文档集合,提取文献标题、合并文献PDF并生成目录和页码引言:功能概述步骤一:提取PDF标题步骤二:生成目录和页码,合并PDF技术亮点代码步骤一:提取PDF标题(Step_two.ipynb)步骤二:生成目录和页码,合并PDF(Step_two.ipynb)引言:在学术研究、文档管理等领域,经常需......
  • 获取微信联系人列表的一种方法
    获取微信联系人列表的一种方法代码图例本文提供了一种获取微信的联系人列表的方法,步骤如下:给微信的联系人加上备注登录微信windowspc客户端,打开通讯录管理调整窗口大小,让备注这一列的内容完整显示使用FSCapture工具截取该窗口的长图(选中窗口,点击捕捉滚......
  • CentOS-7部署PHP-7.4
    CentOS-7部署PHP-7.4使用CentOS-7-x86_64-Minimal-2009.iso安装一、常用操作1:关闭防火墙servicefirewalldstopsystemctldisablefirewalld2:启用登录密钥mkdir-p~/.ssh&&echo'ssh-ed25519AAAAC3NzaC1lZDI1NTE5AAAAINczVrP1nQt56KrtY0zFDRYvNGjMVS2MphwNWXH5j7ygxi......
  • PHP反序列化总结
    0x01.前言本文首发于先知:https://xz.aliyun.com/t/12507。花些时间把四种常见的php反序列化总结了一遍,各自都找了简单示例和例题,参考了一些师傅的链接加上自己的理解,参考链接放在文末0x02.反序列化是什么说到反序列化,经常会想到serialize(),unserialize()这两个函数。我看到......
  • PHP-CGI远程1代码执行漏洞(CVE-2012-1823)
    影响版本php<5.3.12orphp<5.4.2测试环境cdphp/cve-2012-1823docker-composeup-d访问http://your-ip:8080/index.php?-s即爆出源码,说明漏洞存在。发送如下数据包,可见Body中的代码已被执行:POST/index.php?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a......
  • php使用openssl生成公钥私钥
    1、确保你的PHP环境已经启用了OpenSSL扩展$config=array("digest_alg"=>"sha1","private_key_bits"=>1024,"private_key_type"=>OPENSSL_KEYTYPE_RSA,"config"=>�......
  • thinkphp 5 跨域问题解决
    版本:5.1.41LTS从网上搜到好多从/public/index.php添加heade信息,或者用中间件,或者添加behavior操作,可以做到解决跨域问题,但是亲身试验了都不行,今天刚找了一个,可以使用,放在这里header('Access-Control-Allow-Credentials:true');header('Access-Control-Allow-Methods:GET,......
  • php-构建自己的composer包
    【windows】版1.安装composer,选择PHP版本https://getcomposer.org/Composer-Setup.exe2.安装githttps://objects.githubusercontent.com/github-production-release-asset-2e65be/23216272/2d1c35e2-ece0-4287-bc51-b221f43922b4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Cred......