이는 CloudConvert API v2 용 공식 PHP SDK입니다.
PHP SDK를 설치하려면 프로젝트에서 Composer를 사용해야 합니다.
Guzzle과 함께 SDK를 설치합니다.
composer require cloudconvert/cloudconvert-php guzzlehttp/guzzle
이 패키지는 PSR-7, PSR-17, PSR-18 및 HTTPlug를 사용하여 특정 HTTP 클라이언트에 연결되지 않습니다. 따라서 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는 export/url
작업을 사용하기 위한 공개 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()
메서드는 detach()
사용하여 PHP 리소스로 사용할 수 있는 PSR-7 StreamInterface
반환합니다.
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'
// ...
또는 PSR-7 RequestInterface
사용하여 WebhookEvent
생성할 수 있습니다.
$ webhookEvent = $ cloudconvert -> webhookHandler ()-> constructEventFromRequest ( $ request , $ signingSecret );
서명된 URL을 사용하면 URL 쿼리 매개변수를 사용하여 요청 시에만 파일을 변환할 수 있습니다. PHP SDK를 사용하면 이러한 URL을 생성할 수 있습니다. 따라서 CloudConvert 대시보드에서 서명된 URL 기반과 서명 비밀을 얻어야 합니다.
$ 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
기본적으로 공식 CloudConvert 계정을 사용하여 Sandbox API에 대한 통합 테스트를 실행합니다. 자신의 계정을 사용하려면 CLOUDCONVERT_API_KEY
환경 변수를 사용하여 API 키를 설정할 수 있습니다. 이 경우 Sandbox API에 대해 다음 MD5 해시를 화이트리스트에 추가해야 합니다(CloudConvert 대시보드 사용).
53d6fe6b688c31c565907c81de625046 input.pdf
99d4c165f77af02015aa647770286cf9 input.png