#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.mzph.cn/web/14716.shtml

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

相关文章

Docker: exec命令浅析

简介 Docker exec命令是Docker提供的一个强大工具&#xff0c;用于在正在运行的容器中执行命令。在此将介绍Docker exec命令的用法和示例&#xff0c;帮助大家更好地理解和使用这个命令。 Docker是一种流行的容器化平台&#xff0c;允许用户在容器中运行应用程序。有时候&#…

React开发环境配置详细讲解-04

React环境 前端随着规范化&#xff0c;可以说规范和环境插件配置满天飞&#xff0c;笔者最早接触的是jquery&#xff0c;那个开发非常简单&#xff0c;只要引入jquery就可以了&#xff0c;当时还写了一套UI框架&#xff0c;至今在做小型项目中还在使用&#xff0c;show一张效果…

一款颜值颇高的虚拟列表!差点就被埋没了,终于还是被我挖出来了

大家好&#xff0c;我是晓衡&#xff01; 今天&#xff0c;推荐一款颇有颜值的虚拟列表组件&#xff0c;不然真的被埋没就可惜了&#xff01; 我们先来看下效果&#xff1a; 感觉怎么样&#xff1f;还不错吧&#xff01; 为什么说这个资源差点被埋没呢&#xff1f;因为个朋友找…

用数据,简单点!奇点云2024 StartDT Day数智科技大会,直播见

在充满挑战的2024&#xff0c;企业如何以最小化的资源投入和试错成本&#xff0c;挖掘新的增长机会&#xff0c;实现确定性发展&#xff1f; “简单点”是当前商业环境的应对策略&#xff0c;也是奇点云2024 StartDT Day的核心理念。 5月28日&#xff0c;由奇点云主办的2024 S…

Linux —— 信号量

Linux —— 信号量 什么是信号量P操作&#xff08;Wait操作&#xff09;V操作&#xff08;Signal操作&#xff09;信号量的类型 一些接口POSIX 信号量接口&#xff1a;其他相关命令&#xff1a; 基于循环队列的生产者和消费者模型同步关系 多生产多消费 我们今天接着来学习信号…

【译】组复制和 Percona XtraDB 集群: 常见操作概述

原文地址&#xff1a;Group Replication and Percona XtraDB Cluster: Overview of Common Operations 在这篇博文中&#xff0c;我将概述使用 MySQL Group Replication 8.0.19&#xff08;又称 GR&#xff09;和 Percona XtraDB Cluster 8 (PXC)&#xff08;基于 Galera&…

Jetbrains插件AI Assistant,终于用上了

ai assistant激活成功后&#xff0c;如图 ai assistant获取&#xff1a;https://web.52shizhan.cn/activity/ai-assistant 主要功能如下

Spring Boot 配置使用 PEM 格式SSL/TLS证书和私钥

传统的为 Spring Boot 配置SSL/TLS证书一般都会把证书打包成 JKS(Java KeyStore) 或 PKCS12 (Public Key Cryptographic Standards) 格式&#xff0c;然后为Spring Boot 增加以下类似配置&#xff1a; # The format used for the keystore. It could be set to JKS in case it…

SpringBoot(六)之内嵌容器

SpringBoot&#xff08;六&#xff09;之内嵌容器 文章目录 SpringBoot&#xff08;六&#xff09;之内嵌容器内嵌容器的特点如何替换默认容器1.pom形式2.主动配置 如何通过配置切换serlvet容器 Spring Boot 提供了一种便捷的方式来创建独立运行的 Spring 应用程序&#xff0c;…

计算机毕业设计hadoop+spark微博舆情大数据分析 微博爬虫可视化 微博数据分析 微博采集分析平台 机器学习(大屏+LSTM情感分析+爬虫)

电商数据建模 一、分析背景与目的 1.1 背景介绍 电商平台数据分析是最为典型的一个数据分析赛道&#xff0c;且电商数据分析有着比较成熟的数据分析模型&#xff0c;比如&#xff1a;人货场模型。此文中我将通过分析国内最大的电商平台——淘宝的用户行为&#xff0c;来巩固数…

算法打卡 Day13(栈与队列)-滑动窗口最大值 + 前 K 个高频元素 + 总结

文章目录 Leetcode 239-滑动窗口最大值题目描述解题思路 Leetcode 347-前 K 个高频元素题目描述解题思路 栈与队列总结 Leetcode 239-滑动窗口最大值 题目描述 https://leetcode.cn/problems/sliding-window-maximum/description/ 解题思路 在本题中我们使用自定义的单调队列…

C语言指针指针和数组笔试题(必看)

前言&#xff1a; 前面介绍了指针的大体内容&#xff0c;如果接下来能够把这些代码的含义搞得清清楚楚&#xff0c;那么你就是代码king&#xff01; 一维数组&#xff1a; int a[] {1,2,3,4}; printf("%d\n",sizeof(a)); printf("%d\n",sizeof(a0)); pr…

element-ui输入框和多行文字输入框字体不一样解决

element-ui的type"textarea"的字体样式与其他样式不同 <el-input type"textarea"></el-input> <el-input ></el-input>设置&#xff1a; .el-textarea__inner::placeholder {font-family: "Helvetica Neue", Helvetic…

linux排查思路

1.账号安全 who 查看当前登录用户&#xff08;tty本地登录pts远程登录&#xff09; w 查看系统信息&#xff0c;想知道某一时刻用户的行为 uptime 查看登录多久、多少用户&#xff0c;负载 1.查看用户信息文件/etc/passwd root:x:0:0:root:/root:/bin:/b…

删除MySQL中所有表的外键

方法一&#xff1a; 原理 查询schema中所有外键名称然后拼接生成删除语句 第一步&#xff1a; SELECT CONCAT(ALTER TABLE ,TABLE_SCHEMA,.,TABLE_NAME, DROP FOREIGN KEY ,CONSTRAINT_NAME, ;) FROM information_schema.TABLE_CONSTRAINTS c WHERE c.TABLE_SCHEMA数据库名…

Vue 跨域代理设置

Vue CLI允许你通过项目根目录下的vue.config.js文件来定制devServer的配置。以下是一些常见的配置示例&#xff1a; module.exports {devServer: {// 跨域代理配置&#xff0c;解决开发环境API跨域问题proxy: {//匹配以api路径请求的URL&#xff0c;转发请求的服务器地址/api…

课时135:awk实践_逻辑控制_综合实践

1.3.8 综合实践 学习目标 这一节&#xff0c;我们从 网络实践、文件实践、小结 三个方面来学习 网络实践 简介 所谓的网络实践&#xff0c;主要是借助于awk的数组功能&#xff0c;进行站点的信息统计操作。准备网络环境 安装软件 yum install nignx -y重启nginx [rootloca…

Linux修炼之路之自动化构建工具,进度条,gdb调试器

目录 一&#xff1a;自动化构建工具make/makefile 生成内容&#xff1a; 清理内容&#xff1a; 对于多过程的&#xff1a; 对于多次make&#xff1a; 特殊符号&#xff1a; 二&#xff1a;小程序之进度条 三&#xff1a;git的简单介绍 四&#xff1a;Linux调试器gdb 接…

fpga 提高有什么进阶书推荐?

到FPGA中后期的时候就要开始接触&#xff0c;如&#xff1a;高速接口、光纤数字信号处理等项目实践了&#xff0c;那么我们可以读一些书进行提升&#xff0c;大家可以收藏下。 高速接口项目《嵌入式高速串行总线技术:基于FPGA实现与应用》作者&#xff1a;张锋 FPGA提升书籍推…