PHP将PDF转图片-实战

news2025/1/11 0:47:56

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;
    }

在这里插入图片描述

在这里插入图片描述

关注我下期出Linux环境下PHP PDF转图片

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

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

相关文章

【人脸识别】形态学教室人数统计(带面板)【含Matlab源码 1703期】

⛄一、人数统计简介(附课程作业报告) 1 课题背景 本课题为基于matlab的人数统计系统。近年来,很多行业对人流信息有极大的需求,如汽车公交站,地铁站台,商场出入口等。通过人数统计系统可以方便、可靠、实时…

5-6: Elasticsearch(入门安装)

Elasticsearch简介 一个分布式的(多台服务器集群部署)、Restful风格(设计风格,前后端交互的风格,请求标准的描述)的搜索引擎。支持对各种类型的数据的检索。搜索速度快,可以提供实时的搜索服务。便于水平扩展&#xf…

23.层和块

在构造自定义块之前,我们先回顾一下多层感知机 的代码。 下面的代码生成一个网络,其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层, 然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。 import torch from torch import nn …

是面试官放水,还是公司实在是太缺人?这都没挂,京东原来这么容易进...

“京东是大企业,是不是很难进去啊?”“在京东做软件测试,能得到很好的发展吗?一进去就有9.5K,其实也没有想的那么难”直到现在,心情都还是无比激动! 本人211非科班,之前在字节和腾讯…

第04讲:Security之用户授权

一、创建项目 参考:浅试Security 二、实现用户授权 2.1、基于权限进行访问控制 hasAuthority方法:如果当前的主体具有指定的权限,则返回true,否则返回false。hasAnyAuthority方法:如果当前的主体有任何提供的权限的…

二叉树的前序-中序-后序遍历

在牛客网刷到了二叉树的遍历,二叉树的遍历分为前序遍历,前序遍历也有先序遍历之称,还有中序遍历,以及后序遍历,这么多种遍历,遍历的方式不一样而已,前序遍历是先遍历根然后左节点然后是右节点&a…

两年前端的2022:24岁、辗转三省、进入阿里

前言 前排声明:文中主人公不是博主,另外本文只是一些朋友在工作、生活上的经历和琐碎,想看技术干货的掘友请止步,不要在本文上浪费你的学习时间~~~ 2022年,也实实在在满24岁了,毕业进入社会两年多&#xff…

我与外企上司的四个职场故事

标题:我与外企上司的四个职场故事 我在目前这家任职的外企从事软件开发工作,已经整整十五年了。本系列文章通过介绍我与自己上司的四个职场小故事,想和大家分享在外企里,一个程序员除了埋头提升自己技术之外,还有哪些…

数据自动录入并生成报表神器怎么玩?

做报表、分析数据、做汇报是许多打工人的日常,每天都要耗费不少的时间用Excel来整理、清洗数据和生成好看的报表。如果这些数据都是手动整理、复制粘贴的话,不仅费时费力,而且很容易出错。 在越来越多企业采用SaaS产品和不同数据应用的今天&…

没有任何销售经验怎么进行销售团队管理?

没有任何销售经验想要进行销售团队管理,并不是一件容易的事情。每一行都有值得研究和学习的地方,需要学习补充的知识点还是比较多的。 参考《销售管理管理成长手册》,本文为您讲解以下管理知识,包括:1、明白销售经理是…

春招升级打怪拿offer,10w+字总结的Java面试题(附答案)够你刷

春招升级打怪拿offer,献上熬夜整理最新“10w字总结的Java面试题(附答案)”够你刷! 其包含的内容模块有:基础、JVM、多线程与高并发、Spring、MyBatis、SpringBoot、MYSQL、SpringCloud、Dubbo、Nginx、MQ、数据结构与算…

libevent实战学习

目录 编译安装libevent libevent 事件对象 事件操作 事件循环 事件处理 libevent 客户端demo libevent 服务端demo libevent 服务端升级demo libevent完整demo 总结 C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 编译安装libevent git上下载h…

十分钟彻底搞懂python异常

异常 目标 异常的概念捕获异常异常的传递抛出异常 01. 异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常程序停止执行并且提示错误信息 这个动作,…

真无线耳机哪个品牌音质最好?半入耳式真无线蓝牙耳机推荐

对于社恐的人来说,出门在外都会选择佩戴上耳机,那么这种情况下,一款高品质的耳机真的是必不可少的,选择了一款性能优秀的耳机,不光能够让自己听音乐的过程中有更好的体验感,同时还能舒缓身心,让…

编程常见的问题(三) 线程池

编程常见的问题(三) 线程池 今天,我来讲讲使用线程池需要注意的一些问题。 在程序中,我们会用各种池化技术来缓存创建昂贵的对象,比如线程池、连接池、内存池。一般是预先创建一些对象放入池中,使用的时候直接取出使用&#xff…

[附源码]Node.js计算机毕业设计高校运动会管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

阿里三面,mmap 没答好!

1、mmap基础概念 mmap 是一种内存映射文件的方法,即将一个文件或者其他对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一映射关系。 实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存&a…

给你30s,如何跟面试官讲清楚跳表

查找 假设有如下这样一个有序链表: 想要查找 24、43、59,按照顺序遍历,分别需要比较的次数为 2、4、6 目前查找的时间复杂度是 O(N),如何提高查找效率? 很容易想到二分查找,将查找的时间复杂度降到 O(Lo…

MipNeRF:多尺度、抗混叠NeRF

Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields ​ ICCV 2021 文章目录Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields原始NeRF的问题重点componentsCone TracingIPE-integrated positional encodingPE与…

微服务框架 SpringCloud微服务架构 多级缓存 47 Lua 语法入门 47.2 变量和循环

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存47 Lua 语法入门47.2 变量和循环47.2.1 数据类型47.2.2 变量47.2.3 循环47 Lua 语法入门 47.2 变量和…