PHP将PDF转成多个PNG文件

  1. 安装Imagick之前,您需要确保已安装PHP。如果您尚未安装PHP,请运行以下命令安装PHP及其常用扩展:
bash 复制代码
sudo apt install php php-cli php-imagick
  1. 安装Imagick PHP扩展:
bash 复制代码
sudo apt install php-imagick

3.安装后,您需要重新启动Apache(如果正在使用):

bash 复制代码
sudo systemctl restart apache2

4.您可以通过运行以下命令来检查Imagick扩展是否已正确安装:

bash 复制代码
php -m | grep imagick

完成上述步骤后,您的Ubuntu系统应该已经安装了Imagick。您现在可以使用PHP代码来处理PDF文件并将其转换为PNG图像。

以下为PHP代码:

php 复制代码
<?php
namespace common;

use app\common\controller\Common;


/**
 * 提供PDF管理服务
 * @name PDF.php
 * @package jypp
 * @category model
 * @link http://www.chanekeji.com
 * @author mengchen
 * @version 1.0
 * @copyright CHANGE INC
 * @since 2023-02-15
 */
class PDF
{
    
    /**
     * PDF转PNG
     */
    public function pdfToPng($pdf,$num = 2)
    {   
        // 设置保存路径
        $savePath = sprintf('upload/pdf_images/%s',date('Ymd'));

        // 设置图片存放路径
        $path = sprintf('%spublic/%s',ROOT_PATH,$savePath);
        if (!file_exists($path)) {
            mkdir($path, 0755, true); //创建目录
        }

        $images = [];
        $imagick = new \Imagick();

        // 设置图片分辨率
        $imagick->setResolution(120, 120);

        // 该函数接受单个参数$quality,该参数保存一个表示图像压缩质量的整数值
        $imagick->setCompressionQuality(100);

        // 设置安全选项
        $imagick->setOption('security:policy', 'undefined');

        // 读取pdf文件
        $imagick->readImage($pdf);

        //获取文件页数
        $imagickNum = $imagick->getNumberImages();

        // 循环生成png图片
        foreach ($imagick as $key => $image) {
            if($key + 1 <= min($num, $imagickNum)){

                // 设置背景颜色
                $image->setImageBackgroundColor('white');

                $image->setImageAlphaChannel($imagick::ALPHACHANNEL_REMOVE); // 移除透明通道

                // 设置图片格式并生成png图片
                $image->setImageFormat('png');
                // 设置文件名
                $fileName = sprintf('%s.png',md5($key.time()));

                // 设置文件路径
                $file = sprintf('%s/%s', $path, $fileName);
                if ($image->writeImage($file) === true) {
                    $images[] = sprintf('%s/%s',$savePath,$fileName);
                }
            }
        }
        return $images;
    }
}
相关推荐
cen__y1 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
社交怪人1 小时前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
郭涤生2 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS2 小时前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣2 小时前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye100862 小时前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
AI科技星3 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
审判长烧鸡3 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go
kkeeper~3 小时前
0基础C语言积跬步之字符函数与字符串函数(上)
c语言·开发语言