jorisvanw / cloudconvert-php
PHP Wrapper for CloudConvert APIs [For Guzzlehttp 6]
Requires
- guzzlehttp/guzzle: >=6.0
Requires (Dev)
- clue/phar-composer: ~1.0
- phpdocumentor/phpdocumentor: 2.*
- phpunit/phpunit: 4.0.*
- squizlabs/php_codesniffer: 1.*
README
这是一个轻量级的CloudConvert API包装器。
您可以自由使用、改进或修改此包装器!如果您有任何问题,请联系我们或在GitHub上打开一个issue。
快速入门
<?php require __DIR__ . '/vendor/autoload.php'; use \CloudConvert\Api; $api = new Api("your_api_key"); $api->convert([ 'inputformat' => 'png', 'outputformat' => 'pdf', 'input' => 'upload', 'file' => fopen('./tests/input.png', 'r'), ]) ->wait() ->download('./tests/output.pdf'); ?>
您可以使用 CloudConvert API控制台,使用此包装器生成可用的PHP代码片段。
使用Composer安装
要下载此包装器并将其集成到您的PHP应用程序中,您可以使用 Composer。
在您的 composer.json 文件中添加仓库,或者如果您还没有此文件,请在项目根目录下创建它,内容如下
{ "name": "Example Application", "description": "This is an example", "require": { "cloudconvert/cloudconvert-php": "dev-master" } }
然后,您可以使用以下命令安装CloudConvert API包装器和依赖项
php composer.phar install
这将把 cloudconvert/cloudconvert-php
安装到 ./vendor
,以及其他依赖项,包括 autoload.php
。
手动安装
如果您不想使用composer,您可以从GitHub上 Releases 选项卡下载 cloudconvert-php.phar 发布版本。.phar文件实际上是一个ZIP文件,包含所有依赖项,可以使用如下所示的方式使用
<?php require 'phar://cloudconvert-php.phar/vendor/autoload.php'; use \CloudConvert\Api; $api = new Api("your_api_key"); //...
使用回调
这是一个非阻塞的服务器端转换示例:将输入文件的公开URL和回调URL发送到CloudConvert。如果转换完成,CloudConvert将触发此回调URL。
<?php require __DIR__ . '/vendor/autoload.php'; use \CloudConvert\Api; $api = new Api("your_api_key"); $process = $api->createProcess([ 'inputformat' => 'png', 'outputformat' => 'jpg', ]); $process->start([ 'outputformat' => 'jpg', 'converteroptions' => [ 'quality' => 75, ], 'input' => 'download', 'file' => 'https://cloudconvert.com/blog/wp-content/themes/cloudconvert/img/logo_96x60.png', 'callback' => 'http://_INSERT_PUBLIC_URL_TO_/callback.php' ]); echo "Conversion was started in background :-)"; ?>
使用以下 callback.php 您可以检索完成的过程并下载输出文件。
<?php require __DIR__ . '/vendor/autoload.php'; use \CloudConvert\Api; use \CloudConvert\Process; $api = new Api("your_api_key"); $process = new Process($api, $_REQUEST['url']); $process->refresh()->download("output.jpg"); ?>
用户上传的输入文件
如果您的输入文件由您的用户提供,您可以让您的用户直接将文件上传到CloudConvert(而不是首先将它们上传到您的服务器,然后再发送到CloudConvert)。以下示例显示了如何轻松实现这一点。
<?php require __DIR__ . '/vendor/autoload.php'; use \CloudConvert\Api; $api = new Api("your_api_key"); $process = $api->createProcess([ 'inputformat' => 'png', 'outputformat' => 'jpg', ]); $process->start([ 'input' => 'upload', 'outputformat' => 'jpg', 'converteroptions' => [ 'quality' => 75, ], 'callback' => 'http://_INSERT_PUBLIC_URL_TO_/callback.php' ]); ?> <form action="<?=$process->upload->url?>" method="POST" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit"> </form>
下载多个输出文件
在某些情况下,可能存在多个输出文件(例如,将多页PDF转换为JPG)。您可以使用 downloadAll()
方法将它们全部下载到同一目录。
<?php require __DIR__ . '/vendor/autoload.php'; use \CloudConvert\Api; $api = new Api("your_api_key"); $process = $api->convert([ 'inputformat' => 'pdf', 'outputformat' => 'jpg', 'converteroptions' => [ 'page_range' => '1-3', ], 'input' => 'download', 'file' => fopen('./tests/input.pdf', 'r'), ]) ->wait() ->downloadAll('./tests/'); ?>
或者,您可以遍历 $process->output->files
,并使用 $process->download($localfile, $remotefile)
分别下载它们。
捕获异常
以下示例显示了如何在转换过程中捕获可能出现的不同异常类型
<?php require __DIR__ . '/vendor/autoload.php'; use \CloudConvert\Api; $api = new Api("your_api_key"); try { $api->convert([ 'inputformat' => 'pdf', 'outputformat' => 'jpg', 'input' => 'upload', 'file' => fopen('./tests/input.pdf', 'r'), ]) ->wait() ->downloadAll('./tests/'); } catch (\CloudConvert\Exceptions\ApiBadRequestException $e) { echo "Something with your request is wrong: " . $e->getMessage(); } catch (\CloudConvert\Exceptions\ApiConversionFailedException $e) { echo "Conversion failed, maybe because of a broken input file: " . $e->getMessage(); } catch (\CloudConvert\Exceptions\ApiTemporaryUnavailableException $e) { echo "API temporary unavailable: " . $e->getMessage() ."\n"; echo "We should retry the conversion in " . $e->retryAfter . " seconds"; } catch (Exception $e) { // network problems, etc.. echo "Something else went wrong: " . $e->getMessage() . "\n"; }
如何构建文档?
文档基于phpdocumentor。要使用其他质量工具安装它,您可以在克隆的项目中安装本地npm项目
git clone https://github.com/LunawebLtd/cloudconvert-php.git
cd cloudconvert-php
php composer.phar install
npm install
要生成文档,可以直接使用
grunt phpdocs
文档位于docs/目录中。
如何运行测试?
测试基于phpunit。要使用其他质量工具安装它,您可以在克隆的项目中安装本地npm项目
git https://github.com/LunawebLtd/cloudconvert-php.git
cd cloudconvert-php
php composer.phar install
npm install
使用您的API Key编辑 phpunit.xml 文件以通过功能测试。然后,您可以直接使用grunt运行单元测试和功能测试。
grunt