oscarsalomon89 / cups-ipp

CUPS 实现的 IPP - PHP 客户端 API

v0.4.0 2018-03-09 13:58 UTC

This package is not auto-updated.

Last update: 2024-09-24 18:58:48 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 oscarsalomon89/cups-ipp

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

要求

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

首先,检查您是否有权访问此文件:/var/run/cups/cups.sock

实现

列出打印机

<?php

include 'vendor/autoload.php';

use oscarsalomon89\Cups\Builder\Builder;
use oscarsalomon89\Cups\Manager\PrinterManager;
use oscarsalomon89\Cups\Transport\Client;
use oscarsalomon89\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 oscarsalomon89\Cups\Builder\Builder;
use oscarsalomon89\Cups\Manager\JobManager;
use oscarsalomon89\Cups\Manager\PrinterManager;
use oscarsalomon89\Cups\Transport\Client;
use oscarsalomon89\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 oscarsalomon89\Cups\Builder\Builder;
use oscarsalomon89\Cups\Manager\JobManager;
use oscarsalomon89\Cups\Manager\PrinterManager;
use oscarsalomon89\Cups\Model\Job;
use oscarsalomon89\Cups\Transport\Client;
use oscarsalomon89\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);