• PHP将PDF转成多个PNG文件


    1. 安装Imagick之前,您需要确保已安装PHP。如果您尚未安装PHP,请运行以下命令安装PHP及其常用扩展:

    sudo apt install php php-cli php-imagick

    2. 安装Imagick PHP扩展:

    sudo apt install php-imagick

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

    sudo systemctl restart apache2

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

    php -m | grep imagick

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

    以下为PHP代码

    1. namespace common;
    2. use app\common\controller\Common;
    3. /**
    4. * 提供PDF管理服务
    5. * @name PDF.php
    6. * @package jypp
    7. * @category model
    8. * @link http://www.chanekeji.com
    9. * @author mengchen
    10. * @version 1.0
    11. * @copyright CHANGE INC
    12. * @since 2023-02-15
    13. */
    14. class PDF
    15. {
    16. /**
    17. * PDF转PNG
    18. */
    19. public function pdfToPng($pdf,$num = 2)
    20. {
    21. // 设置保存路径
    22. $savePath = sprintf('upload/pdf_images/%s',date('Ymd'));
    23. // 设置图片存放路径
    24. $path = sprintf('%spublic/%s',ROOT_PATH,$savePath);
    25. if (!file_exists($path)) {
    26. mkdir($path, 0755, true); //创建目录
    27. }
    28. $images = [];
    29. $imagick = new \Imagick();
    30. // 设置图片分辨率
    31. $imagick->setResolution(120, 120);
    32. // 该函数接受单个参数$quality,该参数保存一个表示图像压缩质量的整数值
    33. $imagick->setCompressionQuality(100);
    34. // 设置安全选项
    35. $imagick->setOption('security:policy', 'undefined');
    36. // 读取pdf文件
    37. $imagick->readImage($pdf);
    38. //获取文件页数
    39. $imagickNum = $imagick->getNumberImages();
    40. // 循环生成png图片
    41. foreach ($imagick as $key => $image) {
    42. if($key + 1 <= min($num, $imagickNum)){
    43. // 设置背景颜色
    44. $image->setImageBackgroundColor('white');
    45. $image->setImageAlphaChannel($imagick::ALPHACHANNEL_REMOVE); // 移除透明通道
    46. // 设置图片格式并生成png图片
    47. $image->setImageFormat('png');
    48. // 设置文件名
    49. $fileName = sprintf('%s.png',md5($key.time()));
    50. // 设置文件路径
    51. $file = sprintf('%s/%s', $path, $fileName);
    52. if ($image->writeImage($file) === true) {
    53. $images[] = sprintf('%s/%s',$savePath,$fileName);
    54. }
    55. }
    56. }
    57. return $images;
    58. }
    59. }

  • 相关阅读:
    windows安装rocketmq4.9.2
    mathlab 数据维度调换函数permute()
    JavaScript 69 JavaScript Web API 69.1 Web API - 简介
    基于Yolov5的吸烟行为识别检测
    C语言红楼梦人物分析系统
    x64内核实验6-进程
    vue脚手架---组件的使用
    DockerFile常用保留字指令及知识点合集
    【Flink SQL】Flink SQL 基础概念(三):SQL 动态表 & 连续查询
    C++项目实战-信号
  • 原文地址:https://blog.csdn.net/wyh757787026/article/details/136597124