mrpix/cloudprintsdk

这是使用mpXcloudprint服务的官方PHP库。

v1.3.0 2024-04-03 09:59 UTC

This package is not auto-updated.

Last update: 2024-09-18 12:51:31 UTC


README

Version Test Code Size Downloads License

这是mr. pixel的云打印服务的官方PHP SDK。此库包含与mpXcloudprint API交互的方法。以下是使用此SDK的简短说明和一些示例以开始使用。有关更多信息,请访问我们的官方文档。

安装

此库不依赖于任何http客户端如Guzzle。您可以使用任何支持php-http/client-implementation的http客户端。

为了快速开始,安装cloudprint-sdk并使用您喜欢的http客户端,如Guzzle或Symfony Http Client

composer require mrpix/cloudprintsdk symfony/http-client

用法

此项目依赖于Composer。建议让Composer自动加载器自动加载所有依赖项。以下示例将向您展示如何包含mpXcloudprint API的客户端。

require 'vendor/autoload.php';
use Mrpix\CloudPrintSDK\HttpClient\CloudPrintClient;

$client = new CloudPrintClient();

身份验证

某些操作需要您进行身份验证。您可以使用以下三种身份验证选项。

  1. 在CloudPrintClient构造函数中提供登录凭据

    第一种选项是在构造CloudPrintClient时提供您的登录凭据。为此,您必须将用户名作为第一个参数传递,将密码作为第二个参数传递。

    // Load credentials from config
    $username = 'your-username@example.com';
    $password = 'yourSecretPassword';
    
    $client = new CloudPrintClient($username, $password);

    然而,使用硬编码的登录凭据是不安全的。如果您想从某些配置中动态加载凭据,则此方法很完美。对于静态凭据,建议的方法是使用环境变量。

  2. 环境变量

    如果您没有在第一个选项中提供您的登录凭据,cloudprint SDK会查找环境变量。您可以在以下环境变量中提供您的凭据

    MRPIX_CLOUDPRINT_USERNAME=your-username@example.com
    MRPIX_CLOUDPRINT_PASSWORD=yourSecretPassword
    
  3. 显式登录

    第三种选项是仅在需要身份验证时使用您的凭据登录。为此,您必须在发送请求之前调用login方法。以下是如何做到这一点的示例

    $client->login('your-username@example.com', 'yourSecretPassword');

注意:如果登录凭据不正确,服务器将为所有请求返回401或403响应。

测试登录凭据

要测试登录凭据是否正确,您可以使用以下示例

if($client->checkLoginCredentials('your-username@example.com', 'yourSecretPassword'))
{
    echo 'Login successful!';
} else {
    echo 'Login failed!';
}

插入新的打印作业

以下部分解释了如何创建新的打印作业。建议创建一个新的指令实例。请求可以通过使用指令的'build'方法构建。通过编译请求,所有给定数据将自动由API解析到所需格式。

模板

以下示例可用于根据预定义的模板创建新的打印作业

$instruction = new InsertTemplatePrintJobInstruction(
    'Printername', 
    'Templatename',
    [
        'variable_key'=>'variable_value'
    ]
);
$request = $instruction->buildRequest();

try {
    $client->send($request);
} catch (ServerException $e) {
    // In case of an error
    echo 'Error '.$e->getStatusCode().": ".$e->getMessage();
}

文档

如果您不想使用模板,您可以上传整个文档。为此,您可以使用以下代码

$instruction = new InsertDocumentPrintJobInstruction(
    'Printername', 
    'This is the content of the document', 
    'nameOfTheFile.stm', 
    MediaTypes::TEXT_VND_STAR_MARKUP
);
$request = $instruction->buildRequest();

try {
    $client->send($request);
} catch (ServerException $e) {
    // In case of an error
    echo 'Error '.$e->getStatusCode().": ".$e->getMessage();
}