CUPS 实现的 IPP - PHP 客户端 API

0.9 2021-08-12 19:40 UTC

This package is auto-updated.

Last update: 2024-09-13 02:33:42 UTC


README

CUPS 实现的 IPP - PHP 客户端 API

CUPS (Common Unix Printing System) 是为类 Unix 计算机操作系统提供的模块化打印系统,允许计算机作为打印服务器。运行 CUPS 的计算机可以作为主机接受来自客户端计算机的打印作业,处理它们并将它们发送到适当的打印机。

Build Status Current Version composer.lock

Total Downloads Monthly Downloads Daily Downloads

通过 Composer 安装

您可以使用 Composer 安装此组件。

composer require julianosorio078/cups-ipp

然后,包含 vendor/autoload.php 文件以启用 Composer 提供的自动加载机制。否则,您的应用程序将无法找到此组件的类。

要求

此库使用 UNIX 套接字连接:unix:///var/run/cups/cups.sock

首先,检查您是否可以正确访问此文件:/var/run/cups/cups.sock

实现

列出打印机

<?php

include 'vendor/autoload.php';

use Smalot\Cups\Builder\Builder;
use Smalot\Cups\Manager\PrinterManager;
use Smalot\Cups\Transport\Client;
use Smalot\Cups\Transport\ResponseParser;

$client = new Client();
$builder = new Builder();
$responseParser = new ResponseParser();

$printerManager = new PrinterManager($builder, $client, $responseParser);
$printers = $printerManager->getList();

foreach ($printers as $printer) {
    echo $printer->getName().' ('.$printer->getUri().')'.PHP_EOL;
}

列出所有打印机的作业

<?php

include 'vendor/autoload.php';

use Smalot\Cups\Builder\Builder;
use Smalot\Cups\Manager\JobManager;
use Smalot\Cups\Manager\PrinterManager;
use Smalot\Cups\Transport\Client;
use Smalot\Cups\Transport\ResponseParser;

$client = new Client();
$builder = new Builder();
$responseParser = new ResponseParser();

$printerManager = new PrinterManager($builder, $client, $responseParser);
$printer = $printerManager->findByUri('ipp://:631/printers/HP-Photosmart-C4380-series');

$jobManager = new JobManager($builder, $client, $responseParser);
$jobs = $jobManager->getList($printer, false, 0, 'completed');

foreach ($jobs as $job) {
    echo '#'.$job->getId().' '.$job->getName().' - '.$job->getState().PHP_EOL;
}

创建并发送新作业

<?php

include 'vendor/autoload.php';

use Smalot\Cups\Builder\Builder;
use Smalot\Cups\Manager\JobManager;
use Smalot\Cups\Manager\PrinterManager;
use Smalot\Cups\Model\Job;
use Smalot\Cups\Transport\Client;
use Smalot\Cups\Transport\ResponseParser;

$client = new Client();
$builder = new Builder();
$responseParser = new ResponseParser();

$printerManager = new PrinterManager($builder, $client, $responseParser);
$printer = $printerManager->findByUri('ipp://:631/printers/HP-Photosmart-C4380-series');

$jobManager = new JobManager($builder, $client, $responseParser);

$job = new Job();
$job->setName('job create file');
$job->setUsername('demo');
$job->setCopies(1);
$job->setPageRanges('1');
$job->addFile('./helloworld.pdf');
$job->addAttribute('media', 'A4');
$job->addAttribute('fit-to-page', true);
$result = $jobManager->send($printer, $job);