Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Cups Ipp Laravel Package

smalot/cups-ipp

PHP library for communicating with CUPS print servers over IPP. Send documents to printers, manage and monitor print jobs, query printer status and attributes, and control queues directly from your PHP application using a lightweight Internet Printing Protocol client.

Deep Wiki
Context7

CUPS Implementation of IPP - PHP Client API

Frequently asked questions about Cups Ipp
Is there a Laravel service provider or facade for smalot/cups-ipp?
No. smalot/cups-ipp is a framework-agnostic PHP client that speaks IPP directly to a CUPS server, so there is no service provider, facade, or config contract to publish. Integration means writing a thin wrapper and binding it into the container yourself, typically as a singleton in your own PrintServiceProvider configured from config/printing.php. Keep Cups\Ipp objects behind an internal PrintGateway contract so vendor types never leak into controllers or queued jobs.
How do I install smalot/cups-ipp with Composer?
Install it like any other Composer dependency with composer require smalot/cups-ipp, then point the client at your CUPS server URI. It needs standard PHP only, with no daemon or extra extensions required. Pin an exact version in composer.json from day one, because the package has no release cadence and an unexpected update or framework conflict can break a build.
How do I send a print job to a CUPS printer from Laravel?
Construct the IPP client with your CUPS URI, then call printFile with the document path and a target printer name, optionally setting job attributes such as copies, media, and resolution. Wrap the call in a PrintGateway contract method like submit(PrintJob): JobId so the rest of the application never touches the vendor API. After submission, poll getJobAttributes to drive a job-status state machine, since IPP gives you no push notification in this library. Budget time for that polling loop and for normalizing printer capabilities into something your UI can render.
How do I list printers and query printer status with smalot/cups-ipp?
The library exposes printer discovery and attribute queries, so you can enumerate queues and inspect status, state reasons, and supported options. The catch is that IPP attributes arrive as a typed, nested structure that maps poorly to plain PHP arrays, so plan a normalization layer for media sizes, duplex, and color support. Cache the normalized capability set rather than querying the printer on every page render.
How does authentication and IPPS/TLS work with smalot/cups-ipp?
CUPS servers commonly require Basic or Digest authentication, and that is one of the rougher seams in this library: expect to configure credentials explicitly and to translate failures into your own exception types. IPPS support should be verified against a real server rather than assumed, including certificate validation behavior on your target PHP runtime. Pull credentials from your secrets manager into config/printing.php and never commit them alongside the CUPS URI.
Can I use smalot/cups-ipp in a commercial Laravel product?
The package is GPL-2.0, which is copyleft. If your Laravel application is distributed to customers, such as an on-premise install, appliance, or white-label resale, the combined work is arguably subject to GPL-2.0 and you must make source available. SaaS-only deployments that are never distributed generally do not trigger those obligations, but this needs legal sign-off rather than an engineering decision. For many commercial on-prem products this alone disqualifies the package.
Does smalot/cups-ipp support PHP 8 and current Laravel versions?
Laravel version compatibility is not the real constraint, since the library is framework-agnostic and has no framework coupling. The constraint is maintenance: the last release was 2020-05-25, it has a single-maintainer history and around 108 stars, and there are no PHP 8.x hardening guarantees. Validate it on your target PHP runtime early and expect to patch deprecations such as dynamic properties, implicit nullable parameters, and curl handle typing. Because there is no security response path, plan a vendored or forked copy under an internal namespace with an explicit owner.
Does smalot/cups-ipp support cancelling, holding, and releasing print jobs?
Yes. Listing, inspecting, cancelling, holding, and releasing jobs are part of the covered surface, along with submitting documents and raw data. What is missing is IPP event and subscription support, so there is no push-based job or printer monitoring. Newer CUPS behaviors are also out of scope, since the protocol coverage is frozen at the 2020 release.
How should I test smalot/cups-ipp in a Laravel test suite?
Do not mock the vendor client directly in application tests. Bind a fake implementation of your PrintGateway contract in the container and assert against submit, status, and printers calls instead. Keep a small integration suite that runs against a real CUPS instance, covering the spike path of connecting, submitting a job, polling to completion, and cancelling. That split keeps fast tests deterministic while still catching protocol-level regressions.
What are the alternatives to smalot/cups-ipp for Laravel printing?
The realistic options are a maintained fork of this library under your own namespace, a direct IPP implementation over Guzzle, or a vendor print API that handles the protocol for you. Because the upstream project is stale, the fork is the migration path rather than a contingency, so introduce the PrintGateway interface first and treat smalot/cups-ipp as the initial adapter. That keeps the vendor boundary narrow enough to swap without touching controllers or jobs.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core
nodisrupt/laravel-agent
sierratecnologia/media-manager