support-site/cups-ipp

CUPS 实现的 IPP - PHP 客户端 API

1.0.0 2023-05-11 05:00 UTC

This package is auto-updated.

Last update: 2024-09-11 12:43:39 UTC


README

CUPS 实现的 IPP - PHP 客户端 API

CUPS (通用 Unix 打印系统) 是一种模块化打印系统,适用于类 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);