stikkx / cups-ipp
CUPS的IPP实现 - PHP客户端API (PHP >= 7.2.5)
dev-master
2024-07-12 12:16 UTC
Requires
- php: >=7.2.5
- ext-gettext: *
- guzzlehttp/guzzle: ^7.8
- guzzlehttp/psr7: ^2.6.1
- php-http/client-common: ^2.1
- php-http/message: ^1.0
- symfony/yaml: ^3.2||^4.0||^5.0||^6.0||^7.0
Requires (Dev)
- phpunit/phpunit: ^9
Suggests
- wapmorgan/file-type-detector: Detects file type by filename or content and generates correct mimetype.
This package is not auto-updated.
Last update: 2024-09-21 11:26:32 UTC
README
CUPS的IPP实现 - PHP客户端API
(smalot/cups-ipp的另一个分支,一个很棒的smalot/cups-ipp,已更新以使用GuzzleHttp\Client,支持PHP >= 7.2.5)
CUPS (通用Unix打印系统) 是一种针对Unix-like计算机操作系统的模块化打印系统,允许计算机作为打印服务器。运行CUPS的计算机可以作为主机接受来自客户端计算机的打印作业,处理它们并将它们发送到相应的打印机。
通过Composer安装
您可以使用Composer安装此组件。
composer require stikkx/cups-ipp
然后,需要包含vendor/autoload.php
文件以启用Composer提供的自动加载机制。否则,您的应用程序将无法找到此组件的类。
要求
此库使用Unix sock连接: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); // Find the printer by the Uri //$printer = $printerManager->findByUri('ipp://:631/printers/HP-Photosmart-C4380-series'); // or by the name $printers = $printerManager->findByName('HP-Photosmart-C4380-series'); if (!empty($printers)) { $printer = $printers[0]; $jobManager = new JobManager($builder, $client, $responseParser); $job = new Job(); $job->setName('job create file'); $job->setUsername('demo'); $job->setCopies(1); $job->setPageRanges('1'); // This can be left out, it will print all pages by default $job->addFile('./helloworld.pdf'); $job->addAttribute('media', 'A4'); $job->addAttribute('fit-to-page', true); $result = $jobManager->send($printer, $job); }
远程CUPS服务器
您可以通过在构造客户端时提供连接详情,轻松连接到远程CUPS服务器。
<?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('username', 'password', ['remote_socket' => 'http://server-ip:631']); $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; }