PHP实现PDF转图片的方法详解
作者:程序员-南 发布时间:2023-05-26 19:59:51
标签:PHP,PDF,图片
Windows环境下
一、开启 Imagick 扩展
1、安装PHP扩展:Imagick,下载地址 https://pecl.php.net/package/imagick 注意和php版本保持一致;
2、将下载下来的文件解压,把php_imagick.dll复制到php/ext下,即php的扩展目录;
3、打开php.ini文件,添加
extension=php_imagick.dll
4、重启apache
二、安装imagemagick
1、下载地址:https://windows.php.net/downloads/pecl/deps/
2、将下载下来的imagemagick文件解压到E盘目录下(目录可根据情况调整,我这里E:\ImageMagick-7.1.0-18-vc15-x64);
3、将E:\ImageMagick-7.1.0-18-vc15-x64\bin加入到系统环境变量path中
4、然后将E:\ImageMagick-7.1.0-18-vc15-x64\bin目录下所有的以dll结尾的文件复制到php根目录下,如果提示重复点击跳过即可
5、复制完成后重启Apache(建议重启计算机),这时候php的imagick拓展安装完成
三、安装Ghostscript软件
1、Ghostscript下载地址:https://www.ghostscript.com/releases/gsdnld.html
四、实例
/**
* @package pdf文档转换图片
* @param string $filepath pdf文档绝对路径 D:/test/test.pdf
* @param string $filename 文件夹名 每个pdf创建一个文件夹
* @return array
*/
public function pdf2png($pdf,$filename){
$path = ROOT_PATH . "public". DS ."uploads". DS ."ppt_image". DS . $filename ; // 图片存放目录
if (!file_exists($path)) {
mkdir($path, 0700, true); //创建目录
chmod($path, 0700); //赋予权限
}
$images = [];
$imagick = new \Imagick();
// 设置图片分辨率
$imagick->setResolution(120, 120);
// 该函数接受单个参数$quality,该参数保存一个表示图像压缩质量的整数值
$imagick->setCompressionQuality(100);
$imagick->readImage($pdf);
foreach ($imagick as $key => $val) {
// 设置图片格式并生成png图片
$val->setImageFormat('png');
// $file = $path . DIRECTORY_SEPARATOR . md5($key.time()) . '.png'; //图片名
$file = $path . DS . md5($key.time()) . '.png'; //图片名
if ($val->writeImage($file) === true) {
$images[] = $file;
}
}
return $images;
}
来源:https://blog.csdn.net/qq_42342282/article/details/128340562


猜你喜欢
- 本文提供一种方法,通过将字符串编码成Unicode格式,保证数据在展示和传输过程中万无一失。无论客户端浏览器如何改变编码,页面上的编码都不会
- 需求描述有时候我们会基于已有数据生成一列在表格中,类似于下面的class BaseSchema(models.Model): ... def
- 前言今天给大家分享一下刷到的关于数值处理的算法题。虽然题目比较简单但是问题的处理方式值得我们学习。小学生算术涉及到加法进位、阶乘精确值用于计
- 前言Scrapy是一个开源的网络爬虫框架,Python编写的。最初设计用于网页抓取,也可以用来提取数据使用API或作为一个通用的网络爬虫。是
- 下载Git安装文件:GIt官网下载地址:Git-2.6.3-64-bit.exe然后就进入了Git的安装界面,如图:Git安装界面和Node
- 先给出一个四人团对Decorator mode的定义:动态地给一个对象添加一些额外的职责。再来说说这个模式的好处:认证,权限检查,记日志,检
- 看了很多介绍javascript面向对象技术的文章,很晕.为什么?不是因为写得不好,而是因为太深奥.javascript中的对象还没解释清楚
- Window对象 窗口操作 Window对象对操作浏览器窗口非常有用,开发者可以移动或调整浏览器窗口的大小。可用四种方法实现这些操作: mo
- 一、JMM的内存可见性保证按程序类型,Java程序的内存可见性保证可以分为下列3类:单线程程序:单线程程序不会出现内存可见性问题。编译器、r
- f-string 字符串格式化语法f-string 是 Python 3.6 版本引入的一种新的字符串格式化语法。与其他字符串格式
- Python字符串常用功能汇总1、字符串的定义#定义空字符串>>> name=''#定义非空字符串>
- 一.相关说明:1、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结
- 1 引言如果你想对图像进行校准,那么透视变换是非常有效的变换手段。透视变换的定义为将图像投影到一个新的视平面,通常也被称之为投影映射。2 公
- Microsoft Access 数据库 (.mdb) 文件大小2 G 字节。不
- 之前整理发表了《XMLHTTPRequest的属性和方法简介》,它ajax要使用的核心的技术之一,现在就来实际运用它。这个Ajax标签导航,
- 本篇文章主要介绍Java操作MongoDB。开发环境:System:WindowsIDE:eclipse、MyEclipse 8Databa
- 鉴于ASP脚本语言是在服务器端IIS或PWS中解释和运行,并可动态生成普通的HTML网页,然后再传送到客户端供浏览的这一特点。我们要在本机上
- python的random库,提供了很多随机抽样方法。1. 设置随机数种子 seed()在适当的情形下,为例保证抽样的结果固定,不因多次运行
- 执行以下SQL,即OK咯叻!! SQL:alter database 数据库名称 SQL_Latin1_General_CP1_CI_AS
- split()介绍函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():