توفر هذه الحزمة فصلًا دراسيًا سهل العمل لتحويل ملف 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
الرجاء مراجعة سجل التغيير للحصول على مزيد من المعلومات حول ما تغير مؤخرًا.
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
يرجى مراجعة سياستنا الأمنية حول كيفية الإبلاغ عن الثغرات الأمنية.
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.