Il s'agit du SDK PHP officiel pour l' API CloudConvert v2 .
Pour installer le SDK PHP, vous devrez utiliser Composer dans votre projet.
Installez le SDK avec Guzzle :
composer require cloudconvert/cloudconvert-php guzzlehttp/guzzle
Ce package n'est lié à aucun client HTTP spécifique en utilisant PSR-7, PSR-17, PSR-18 et HTTPlug. Par conséquent, vous devrez également installer des packages qui fournissent psr/http-client-implementation
et psr/http-factory-implementation
(par exemple 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 )
Vous pouvez utiliser CloudConvert Job Builder pour voir les options disponibles pour les différents types de tâches.
Les téléchargements vers CloudConvert se font via des tâches import/upload
(voir la documentation). Ce SDK offre une méthode de téléchargement pratique :
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 ' );
La méthode upload()
accepte une chaîne, une ressource PHP ou PSR-7 StreamInterface
comme deuxième paramètre.
Vous pouvez également autoriser directement les clients à télécharger des fichiers sur 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 peut générer des URL publiques pour utiliser les tâches export/url
. Vous pouvez utiliser le SDK PHP pour télécharger les fichiers de sortie une fois le Job terminé.
$ 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 );
}
La méthode download()
renvoie un StreamInterface
PSR-7, qui peut être utilisé comme ressource PHP en utilisant detach()
.
Les webhooks peuvent être créés sur le tableau de bord CloudConvert et vous pouvez également y trouver le secret de signature requis.
$ 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'
// ...
Alternativement, vous pouvez construire un WebhookEvent
à l'aide d'un RequestInterface
PSR-7 :
$ webhookEvent = $ cloudconvert -> webhookHandler ()-> constructEventFromRequest ( $ request , $ signingSecret );
Les URL signées permettent de convertir des fichiers à la demande uniquement à l'aide des paramètres de requête d'URL. Le SDK PHP permet de générer de telles URL. Par conséquent, vous devez obtenir une base d'URL signée et un secret de signature sur le tableau de bord 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 ' );
Par défaut, la région dans les paramètres de votre compte est utilisée. Vous pouvez également définir une région fixe :
// 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
Par défaut, cela exécute les tests d'intégration sur l'API Sandbox avec un compte CloudConvert officiel. Si vous souhaitez utiliser votre propre compte, vous pouvez définir votre clé API à l'aide de la variable d'environnement CLOUDCONVERT_API_KEY
. Dans ce cas, vous devez mettre sur liste blanche les hachages MD5 suivants pour l'API Sandbox (à l'aide du tableau de bord CloudConvert).
53d6fe6b688c31c565907c81de625046 input.pdf
99d4c165f77af02015aa647770286cf9 input.png