使用PHP将PDF转换为图片(windows + PHP + ImageMagick)

开发环境

windows 10

PHP 8.0

Ghostscript(ImageMagick 依赖 Ghostscript 处理 PDF,后面有安装方法)

PHP Imagick 扩展(后面有安装方法)

代码示例

目录结构

lua 复制代码
www               根目录
├─output              图片输出目录
├─index.php           核心文件
├─input.pdf           PDF文件

核心代码

php 复制代码
<?php
$pdfPath = 'input.pdf';
$outputDir = 'output/';

if (!file_exists($outputDir)) {
    mkdir($outputDir, 0777, true);
}

$imagick = new Imagick();
$imagick->setResolution(300, 300); // 设置分辨率
$imagick->readImage($pdfPath);
$imagick->setImageFormat('PNG');
foreach ($imagick as $page) {
    $page->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
    $page->writeImage($outputDir . 'page_' . $page->getIteratorIndex() . '.png');
}
$imagick->clear();

echo "转换完成!";

运行测试

在项目根目录下打开命令行,执行以下命令:

bash 复制代码
php index.php

执行成功后,命令行输出"转换完成!",且 output 目录下生成 page_0.png、page_1.png 等图片。


安装 Ghostscript

下载页

arduino 复制代码
https://www.ghostscript.com/releases/gsdnld.html

下载链接

bash 复制代码
https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10050/gs10050w64.exe

双击 gs10050w64.exe 安装 Ghostscript,根据提示重启电脑。

打开命令行,输入 gswin64c -v 如果显示以下信息证明安装成功

安装 PHP 的 Imagick 扩展

perl 复制代码
https://pecl.php.net/package/imagick

本地 PHP 使用版本为 php8.0.2nts,选择 Imagick 扩展对应版本进行下载

bash 复制代码
https://downloads.php.net/~windows/pecl/releases/imagick/3.8.0/php_imagick-3.8.0-8.0-nts-vs16-x64.zip

解压后,把 php_imagick.dll 复制到 PHP 扩展目录 ext(D:\phpstudy\Extensions\php\php8.0.2nts\ext)

把其他的 *.dll 复制到 PHP 根目录(D:\phpstudy\Extensions\php\php8.0.2nts)

打开 php.ini 文件,添加一行

ini 复制代码
extension=php_imagick

命令行输入 php -m,存在 imagick 证明安装成功;或者编写代码,使用 phpinfo(); 查看已安装的扩展。

相关推荐
小蒜学长1 小时前
springboot基于BS的小区家政服务预约平台(代码+数据库+LW)
java·数据库·spring boot·后端
我命由我123451 小时前
Git 暂存文件警告信息:warning: LF will be replaced by CRLF in XXX.java.
java·linux·笔记·git·后端·学习·java-ee
简色1 小时前
预约优化方案全链路优化实践
java·spring boot·后端·mysql·spring·rabbitmq
学编程的小鬼2 小时前
SpringBoot日志
java·后端·springboot
用户4099322502122 小时前
PostgreSQL备份不是复制文件?物理vs逻辑咋选?误删还能精准恢复到1分钟前?
后端·ai编程·trae
HWL56792 小时前
输入框内容粘贴时 &nbsp; 字符净化问题
前端·vue.js·后端·node.js
IT_陈寒2 小时前
「JavaScript 性能优化:10个让V8引擎疯狂提速的编码技巧」
前端·人工智能·后端
武子康3 小时前
大数据-116 - Flink Sink 使用指南:类型、容错语义与应用场景 多种输出方式与落地实践
大数据·后端·flink
lbwxxc3 小时前
go 基础
开发语言·后端·golang
9号达人4 小时前
Java20 新特性详解与实践
java·后端·面试