이 패키지는 PDF를 하나 이상의 이미지로 변환하기 위한 작업하기 쉬운 클래스를 제공합니다.
Imagick과 Ghostscript가 설치되어 있어야 합니다. 자세한 내용은 Ghostscript 및 Imagick 문제 관련 문제를 참조하세요.
패키지는 작곡가를 통해 설치할 수 있으며 PHP 8.2 이상이 필요합니다.
composer require spatie/pdf-to-image
PHP < 8.2를 사용하는 경우 이 패키지 버전 2.0을 사용하세요.
PDF를 이미지로 변환하는 것은 쉽습니다.
$ pdf = new Spatie PdfToImage Pdf ( $ pathToPdf );
$ pdf -> save ( $ pathToWhereImageShouldBeStored );
saveImage
에 전달한 파일 이름의 확장자가 jpg
, jpeg
, png
또는 webp
인 경우 이미지는 해당 형식으로 저장됩니다. 그렇지 않으면 출력 형식은 jpg
가 됩니다.
save()
메서드는 여러 이미지가 저장된 경우 저장된 이미지의 파일 이름이 포함된 배열을 반환하고, 그렇지 않으면 저장된 이미지의 경로가 포함된 문자열을 반환합니다.
PDF의 총 페이지 수를 얻으십시오.
/** @var int $numberOfPages */
$ numberOfPages = $ pdf -> pageCount ();
파일 형식이 지원되는 출력 형식인지 확인하세요.
/** @var bool $isSupported */
$ isSupported = $ pdf -> isValidOutputFormat ( ' jpg ' );
기본적으로 PDF의 첫 번째 페이지만 렌더링됩니다. 다른 페이지를 렌더링하려면 selectPage()
메서드를 호출하세요.
$ pdf -> selectPage ( 2 )
-> save ( $ pathToWhereImageShouldBeStored ); //saves the second page
또는 selectPages()
메서드를 사용하여 여러 페이지를 선택합니다.
$ pdf -> selectPages ( 2 , 4 , 5 )
-> save ( $ directoryToWhereImageShouldBeStored ); //saves the 2nd, 4th and 5th pages
출력 형식을 변경합니다.
$ pdf -> format ( Spatie PdfToImage Enums OutputFormat :: Webp )
-> save ( $ pathToWhereImageShouldBeStored ); //the saved image will be in webp format
출력 품질 (압축 품질) 을 0에서 100까지 설정합니다.
$ pdf -> quality ( 90 ) // set an output quality of 90 %
-> save ( $ pathToWhereImageShouldBeStored );
출력 해상도 DPI를 설정합니다.
$ pdf -> resolution ( 300 ) // resolution of 300 dpi
-> save ( $ pathToWhereImageShouldBeStored );
출력 이미지의 축소판 크기를 지정합니다.
$ pdf
-> thumbnailSize ( 400 ) // set thumbnail width to 400 px; height is calculated automatically
-> save ( $ pathToWhereImageShouldBeStored );
// or:
$ pdf
-> thumbnailSize ( 400 , 300 ) // set thumbnail width to 400 px and the height to 300 px
-> save ( $ pathToWhereImageShouldBeStored );
출력 이미지 너비를 설정합니다.
$ pdf -> size ( 400 ) // set the width to 400 px; height is calculated automatically
-> save ( $ pathToWhereImageShouldBeStored );
출력 이미지 너비와 높이를 설정합니다.
$ pdf -> size ( 400 , 300 ) // set the width to 400 px and the height to 300 px
-> save ( $ pathToWhereImageShouldBeStored );
PDF의 크기를 가져옵니다. 이는 PDF의 해상도가 매우 높은지 확인하는 데 사용할 수 있습니다.
/** @var SpatiePdfToImageDTOsPageSize $size */
$ size = $ pdf -> getSize ();
$ width = $ size -> width ;
$ height = $ size -> height ;
메모
$directoryToWhereImagesShouldBeStored는 기존 디렉터리여야 합니다.
모든 페이지를 이미지로 저장:
$ pdf -> saveAllPages ( $ directoryToWhereImagesShouldBeStored );
Imagick에 대한 레이어 병합 방법 설정:
$ pdf -> layerMethod ( Spatie PdfToImage Enums LayerMethod :: Merge );
// or disable layer merging:
$ pdf -> layerMethod ( Spatie PdfToImage Enums LayerMethod :: None );
출력 이미지의 배경색을 설정합니다.
$ pdf -> backgroundColor ( ' white ' ) // simple text for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
$ pdf -> backgroundColor ( ' #fff ' ) // code for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
$ pdf -> backgroundColor ( ' rgb(255,255,255) ' ) // rgb for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
이 패키지는 Imagick을 통해 Ghostscript를 사용합니다. 이것이 작동하려면 PHP 프로세스에서 Ghostscripts gs
명령에 액세스할 수 있어야 합니다. PHP CLI 프로세스(예: Laravel의 비동기 작업, 명령 등)의 경우 이는 일반적으로 이미 적용되어 있습니다.
그러나 FPM 기반 PHP의 경우(예: "브라우저에서" 이 패키지를 실행하는 경우) 다음과 같은 문제가 발생할 수 있습니다.
Uncaught ImagickException: FailedToExecuteCommand 'gs'
이 문제는 php-fpm.conf
파일 끝에 다음 줄을 추가하고 PHP FPM을 다시 시작하여 해결할 수 있습니다. php-fpm.conf
파일이 어디에 있는지 확실하지 않으면 phpinfo()
확인하세요. Laravel Valet을 사용하는 경우 php-fpm.conf
파일은 /usr/local/etc/php/YOUR-PHP-VERSION
디렉터리에 있습니다.
env[PATH] = /usr/local/bin:/usr/bin:/bin
그러면 PHP FPM이 올바른 위치에서 gs
바이너리를 찾도록 지시합니다.
attempt to perform an operation not allowed by the security policy 'PDF'
메시지와 함께 오류가 표시되는 경우 다음 줄을 policy.xml
파일에 추가해야 할 수 있습니다. 이 파일은 일반적으로 /etc/ImageMagick-[VERSION]/policy.xml
(예: /etc/ImageMagick-7/policy.xml
에 있습니다.
< policy domain = " coder " rights = " read | write " pattern = " PDF " />
spatie/pdf-to-image
단위 테스트에 PEST 프레임워크를 사용합니다. 다음 명령을 사용하여 실행할 수 있습니다.
./vendor/bin/pest
최근 변경된 사항에 대한 자세한 내용은 변경 로그를 참조하세요.
자세한 내용은 CONTRIBUTING을 참조하세요.
보안 취약점을 보고하는 방법에 대한 보안 정책을 검토하세요.
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.