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 파일로 변경한 이미지 파일입니다.
'IT 공부 > PHP' 카테고리의 다른 글
[ PHP ] PDF파일의 페이지 수를 알아내는 법 (0) | 2022.07.06 |
---|---|
[ PHP ] Selenium사용해서, 브라우저 자동화 테스트하기 (0) | 2022.06.14 |
[ PHP ] PHPExcel 를 이용해서 xlsx파일 읽기 (0) | 2022.05.28 |
[ PHP ] CSV파일 내용 불러오기 (Spreadsheet 와 fgetcsv) (0) | 2022.03.02 |
[ PHP ] 연관배열에서 특정키(index)값이 존재하는지 확인하고 싶을 경우 (0) | 2022.02.20 |