내가 한 노력들

[ PHP ] PDF 파일을 이미지 파일로 ( convert PDF to image ) 본문

IT 공부/PHP

[ PHP ] PDF 파일을 이미지 파일로 ( convert PDF to image )

JONGI-N CHOI 2022. 6. 1. 11:56

Spatie의 PdfToimage를 사용하여, PDF를 image 파일로 변경할 수 있다. 

 

우선 Spatie를 사용하기 위해서는 imagick과 Ghostscript를 설치할 필요가 있습니다. 

 

Imagick 설치

설치전에 자신의 환경을 알아둘 필요가 있습니다. 

phpinfo()를 실행하여, 환경을 체크합니다. 

 

PHP는 7.4.7버전 

Architecture는 x64

thread safety는 enabled 되어 있는 상태입니다.

 

 

https://mlocati.github.io/articles/php-windows-imagick.html

위의 주소에 들어가서 나의 환경에 맞는 필터를 적용하여 imagick extension을 찾아 다운로드 합니다. 

 

설치후에 

압축파일을 열어보면, php_imagick_dll 파일이 있습니다. 

이 파일을 "xampp/php/ext" 위치에 압축해제해줍니다 .

 

 

imageMagick 설치 

https://windows.php.net/downloads/pecl/deps/

ImageMagick-7.1.0-18-vc15-x64.zip

위의 URL에서 파일을 설치합니다. 

 

설치한 압축파일을 열어보면, bin폴더가 있고, bin 폴더 안에있는 CORE_*.dll 과 IM_MOD_*.dll 파일들도 모두  "xampp/php/ext" 위치에 압축해제해줍니다 .

 

 

php.ini 설정

맨 아래에 

extension=php_imagick.dll

위의 코드를 삽입합니다. 

 

제대로 설정이 되었는지 확인하기 위해서 phpinfo()를 다시한번 확인해줍니다 .

imagick을 잘 불러오고 있으면 정상적으로 설치가 된 것입니다.

 


Spatie/pdf-to-image 설치

https://github.com/spatie/pdf-to-image#issues-regarding-ghostscript

composer require spatie/pdf-to-image

 


GhostScript 설치 

https://www.ghostscript.com/releases/gsdnld.html

 

위의 버전을 설치 

 

환경변수 

위의 사진과 같이 환경 변수를 등록해줍니다. 

 

 


실제 코드 작성

 

<?php
  require 'vendor/autoload.php';

    $pdf = new Spatie\PdfToImage\Pdf('C:\xampp\htdocs\PHP\pdfimg\new.pdf');

    $numberOfpages = $pdf->getNumberOfPages();

    for ($i = 1; $i <= $numberOfpages; $i++) {

        $fileName = $i . "_" . time();
        $pdf->setPage($i)->saveImage("images/$fileName.jpg");
    }

    echo $i - 1 . "pages converted.";
?>

 

위의 PDF파일 위치를 설정하고

$pdf = new Spatie\PdfToImage\Pdf('C:\xampp\htdocs\PHP\pdfimg\new.pdf');

 

전체 pdf의 페이지수를 읽어와서 

$numberOfpages = $pdf->getNumberOfPages();

 

전체 페이지 수 만큼 반복하여, 각 페이지를 이미지로 저장합니다. 

for ($i = 1; $i <= $numberOfpages; $i++) {

    $fileName = $i . "_" . time();
    $pdf->setPage($i)->saveImage("images/$fileName.jpg");
}

 

위와 같이, 왼쪽은 PDF파일이고, 오른쪽은 Spatie를 이용하여 jpg 파일로 변경한 이미지 파일입니다.