jorisvanw/cloudconvert-php

该软件包最新版本(v3.0.1)没有提供许可证信息。

PHP Wrapper for CloudConvert APIs [For Guzzlehttp 6]

v3.0.1 2016-02-18 11:32 UTC

This package is auto-updated.

Last update: 2024-09-08 07:12:43 UTC


README

这是一个轻量级的CloudConvert API包装器。

您可以自由使用、改进或修改此包装器!如果您有任何问题,请联系我们或在GitHub上打开一个issue。

Build Status

快速入门

<?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

资源