Easy printing with PHP on server side

PHP::PRINT::IPP Homepage


disponible in Savannah: download

What is PHP::PRINT::IPP ?

PrintIPP or PHP::PRINT::IPP is a set of PHP classes (PHP5) which implements an IPP/1.1 (Internet Printing Protocol, version 1.1) client.

PHP::PRINT:IPP has been not designed to cope with IPP/2.0, 2.1 and 2.2. Moreother, these IPP versions (which are just 3 different uses cases, with 2.2 as plain functionality) are still in developpement at the "Printer Working Group" which mainly focuses on consumers services from acquisition (scan, ...) to print, describing uses cases and graphical user interface behavior. If unlikely a triple IPP/2.x would be published through IETF standard process (RFCs), I hope the current complete mess between a protocol definition, GUI and uses cases will be avoided.

PHP::PRINT::IPP, is able to print (send to the IPP server) both strings and files, cancel jobs, as well as perform all RFC2911 operations.

There is also a CUPSsub-class for the Common Unix Printing System server specific stuff. This class is quite outdated regarding new CUPS functions.

PHP::PRINT::IPP is distributed under GNU LGPL. Thus, it is a "Free Software".


Currently, it is able to print both strings and files on an IPP 1.1 server, parses server's response, cancels jobs, and perform all REQUIRED and OPTIONAL operations from RFC2911. CUPS extension have following operations: cupsGetDefaults (get default printer attributes), cupsAcceptJobs, cupsRejectJobs (reject jobs for given printer), cupsGetPrinters (get printers list).


  • The protocol version is IPP/1.1,
  • It is currently tested only with CUPS and a few print servers. Please report if it is working with other servers to the mailing list.
  • SSL/TLS works with CUPS but is not capable of upgrade from standard HTTP connection (TLS upgrade is mandatory regarding specs, apologies...). If you need TLS with CUPS-1.1, please set up "SSLPort" to a dedicated port in cupsd.conf (CUPS 1.2 seems to work well without that setting).


Please report any bug or feature request to PHP::PRINT::IPP project page


It depends on http_class.php, which is shipped with. http_class.php is stable enough, but handles only "Digest" and "Basic" authentication, and is not capable of "upgrade" operation.


PHP::PRINT::IPP is distributed under GNU LGPL, test files under GPL, test script and examples in documentation under BSD license, documentation under both GNU FDL (with no invariant section, no front-cover and no back-cover) and GNU GPL.
It is complex, but logical :)


Tarballs can be found here.

You'll find Debian packages here.

Anonymous cvs: cvs -z3 co phpprintipp

You can also browse CVS at


Documentation and examples will be found in "/documentation" directory in tarball. See also "INSTALL".
On line user documentation is here.
Installation instructions are here.


Post your requests to the mailing list

Mailing list archives will be found here.

Tests / examples

Various examples are given in "./testfiles" tarball directory.

There are also working examples in "./bin" and "./www" directories of the tarball, included PHP/HTML web interfaces and a CLI one.


It is inspired by "CLASS: PHP Print", by Mick Sear, but there is no more code of it in. If you search for a very basic print client, uses it :) PrintSendLPR is available at (license: LGPL).

Tested Print servers

  • CUPS
  • TRENDnet TE100-P1P
  • EPSON EpsonNet (C823782)

Back to top