แพ็คเกจนี้มอบคลาสที่ง่ายต่อการใช้งานในการแปลง 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 );
แพ็คเกจนี้ใช้ Ghostscript ผ่าน Imagick เพื่อให้ทำงานได้ คำสั่ง Ghostscripts gs
ควรสามารถเข้าถึงได้จากกระบวนการ PHP สำหรับกระบวนการ PHP CLI (เช่น งานอะซิงโครนัส คำสั่ง ฯลฯ ของ Laravel) มักจะเป็นเช่นนั้นอยู่แล้ว
อย่างไรก็ตาม สำหรับ PHP บน FPM (เช่น เมื่อใช้งานแพ็คเกจนี้ "ในเบราว์เซอร์") คุณอาจประสบปัญหาต่อไปนี้:
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
โปรดดู CHANGELOG สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่เปลี่ยนแปลงเมื่อเร็วๆ นี้
โปรดดูการมีส่วนร่วมเพื่อดูรายละเอียด
โปรดตรวจสอบนโยบายความปลอดภัยของเราเกี่ยวกับวิธีการรายงานจุดอ่อนด้านความปลอดภัย
ใบอนุญาตเอ็มไอที (MIT) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม