هذا هو PHP SDK الرسمي لـ CloudConvert API v2 .
لتثبيت PHP SDK، ستحتاج إلى استخدام Composer في مشروعك.
قم بتثبيت SDK جنبًا إلى جنب مع Guzzle:
composer require cloudconvert/cloudconvert-php guzzlehttp/guzzle
لا ترتبط هذه الحزمة بأي عميل HTTP محدد باستخدام PSR-7، وPSR-17، وPSR-18، وHTTPlug. لذلك، ستحتاج أيضًا إلى تثبيت الحزم التي توفر psr/http-client-implementation
و psr/http-factory-implementation
(على سبيل المثال Guzzle).
use CloudConvert CloudConvert ;
use CloudConvert Models Job ;
use CloudConvert Models Task ;
$ cloudconvert = new CloudConvert ([
' api_key ' => ' API_KEY ' ,
' sandbox ' => false
]);
$ job = ( new Job ())
-> setTag ( ' myjob-1 ' )
-> addTask (
( new Task ( ' import/url ' , ' import-my-file ' ))
-> set ( ' url ' , ' https://my-url ' )
)
-> addTask (
( new Task ( ' convert ' , ' convert-my-file ' ))
-> set ( ' input ' , ' import-my-file ' )
-> set ( ' output_format ' , ' pdf ' )
-> set ( ' some_other_option ' , ' value ' )
)
-> addTask (
( new Task ( ' export/url ' , ' export-my-file ' ))
-> set ( ' input ' , ' convert-my-file ' )
);
$ cloudconvert -> jobs ()-> create ( $ job )
يمكنك استخدام CloudConvert Job Builder لرؤية الخيارات المتاحة لأنواع المهام المختلفة.
تتم عمليات التحميل إلى CloudConvert عبر مهام import/upload
(راجع المستندات). يوفر SDK هذا طريقة تحميل ملائمة:
use CloudConvert Models Job ;
use CloudConvert Models Task ;
$ job = ( new Job ())
-> addTask ( new Task ( ' import/upload ' , ' upload-my-file ' ))
-> addTask (
( new Task ( ' convert ' , ' convert-my-file ' ))
-> set ( ' input ' , ' upload-my-file ' )
-> set ( ' output_format ' , ' pdf ' )
)
-> addTask (
( new Task ( ' export/url ' , ' export-my-file ' ))
-> set ( ' input ' , ' convert-my-file ' )
);
$ job = $ cloudconvert -> jobs ()-> create ( $ job );
$ uploadTask = $ job -> getTasks ()-> whereName ( ' upload-my-file ' )[ 0 ];
$ cloudconvert -> tasks ()-> upload ( $ uploadTask , fopen ( ' ./file.pdf ' , ' r ' ), ' file.pdf ' );
تقبل طريقة upload()
سلسلة أو مورد PHP أو PSR-7 StreamInterface
كمعلمة ثانية.
يمكنك أيضًا السماح للعملاء مباشرة بتحميل الملفات إلى CloudConvert:
< form action =" <?=$uploadTask->getResult()->form->url?> "
method =" POST "
enctype =" multipart/form-data " >
< ? foreach ((array)$uploadTask- > getResult()- > form- > parameters as $parameter = > $value) { ? >
< input type =" hidden " name =" <?=$parameter?> " value =" <?=$value?> " >
< ? } ? >
< input type =" file " name =" file " >
< input type =" submit " >
</ form >
يمكن لـ CloudConvert إنشاء عناوين URL عامة لاستخدام مهام export/url
. يمكنك استخدام PHP SDK لتنزيل ملفات الإخراج عند انتهاء المهمة.
$ cloudconvert -> jobs ()-> wait ( $ job ); // Wait for job completion
foreach ( $ job -> getExportUrls () as $ file ) {
$ source = $ cloudconvert -> getHttpTransport ()-> download ( $ file -> url )-> detach ();
$ dest = fopen ( ' output/ ' . $ file -> filename , ' w ' );
stream_copy_to_stream ( $ source , $ dest );
}
تقوم طريقة download()
بإرجاع واجهة StreamInterface
PSR-7، والتي يمكن استخدامها كمورد PHP باستخدام detach()
.
يمكن إنشاء Webhooks على لوحة معلومات CloudConvert ويمكنك أيضًا العثور على سر التوقيع المطلوب هناك.
$ cloudconvert = new CloudConvert ([
' api_key ' => ' API_KEY ' ,
' sandbox ' => false
]);
$ signingSecret = ' ... ' ; // You can find it in your webhook settings
$ payload = @ file_get_contents ( ' php://input ' );
$ signature = $ _SERVER [ ' HTTP_CLOUDCONVERT_SIGNATURE ' ];
try {
$ webhookEvent = $ cloudconvert -> webhookHandler ()-> constructEvent ( $ payload , $ signature , $ signingSecret );
} catch ( CloudConvert Exceptions UnexpectedDataException $ e ) {
// Invalid payload
http_response_code ( 400 );
exit ();
} catch ( CloudConvert Exceptions SignatureVerificationException $ e ) {
// Invalid signature
http_response_code ( 400 );
exit ();
}
$ job = $ webhookEvent -> getJob ();
$ job -> getTag (); // can be used to store an ID
$ exportTask = $ job -> getTasks ()
-> whereStatus ( Task :: STATUS_FINISHED ) // get the task with ' finished ' status . . .
-> whereName ( ' export-it ' )[ 0 ]; // ... and with the name 'export-it'
// ...
وبدلاً من ذلك، يمكنك إنشاء WebhookEvent
باستخدام RequestInterface
PSR-7:
$ webhookEvent = $ cloudconvert -> webhookHandler ()-> constructEventFromRequest ( $ request , $ signingSecret );
تسمح عناوين URL الموقعة بتحويل الملفات عند الطلب فقط باستخدام معلمات استعلام URL. يسمح PHP SDK بإنشاء عناوين URL هذه. لذلك، تحتاج إلى الحصول على قاعدة عنوان URL موقعة وسر التوقيع على لوحة تحكم CloudConvert.
$ cloudconvert = new CloudConvert ([
' api_key ' => ' API_KEY ' ,
' sandbox ' => false
]);
$ job = ( new Job ())
-> addTask (
( new Task ( ' import/url ' , ' import-my-file ' ))
-> set ( ' url ' , ' https://my.url/file.docx ' )
)
-> addTask (
( new Task ( ' convert ' , ' convert-my-file ' ))
-> set ( ' input ' , ' import-my-file ' )
-> set ( ' output_format ' , ' pdf ' )
)
-> addTask (
( new Task ( ' export/url ' , ' export-my-file ' ))
-> set ( ' input ' , ' convert-my-file ' )
);
$ signedUrlBase = ' SIGNED_URL_BASE ' ;
$ signingSecret = ' SIGNED_URL_SIGNING_SECRET ' ;
$ url = $ cloudConvert -> signedUrlBuilder ()-> createFromJob ( $ signedUrlBase , $ signingSecret , $ job , ' CACHE_KEY ' );
افتراضيًا، يتم استخدام المنطقة الموجودة في إعدادات حسابك. وبدلاً من ذلك، يمكنك تعيين منطقة ثابتة:
// Pass the region to the constructor
$ cloudconvert = new CloudConvert ([
' api_key ' => ' API_KEY ' ,
' sandbox ' => false ,
' region ' => ' us-east '
]);
vendor/bin/phpunit --testsuite unit
vendor/bin/phpunit --testsuite integration
افتراضيًا، يقوم هذا بتشغيل اختبارات التكامل مع Sandbox API باستخدام حساب CloudConvert الرسمي. إذا كنت ترغب في استخدام حسابك الخاص، فيمكنك تعيين مفتاح API الخاص بك باستخدام متغير البيئة CLOUDCONVERT_API_KEY
. في هذه الحالة، يتعين عليك إضافة تجزئات MD5 التالية إلى القائمة البيضاء لـ Sandbox API (باستخدام لوحة تحكم CloudConvert).
53d6fe6b688c31c565907c81de625046 input.pdf
99d4c165f77af02015aa647770286cf9 input.png