IPP Sample Code Project

Sample implementations of an IPP Client, Proxy, Server, and other tools.

About the IPP Sample Code

The ippsample project provides sample implementations of IPP Clients, Printers, and Proxies. It is largely based upon the CUPS software with substantial changes to the ippproxy and ippserver implementations to make them more general-purpose and configurable. The project also includes two transform programs, ipptransform for 2D printing and ipptransform3d for 3D printing, as well as a "lint" program (ippdoclint) for validating document data in automated test environments.

The server implements most IPP standards including IPP Everywhere™ and includes transform support for 2D and 3D printing. A beta snap is available for Linux systems, with macOS and Windows binaries planned for the 1.0 release.

Contributing

The IPP Sample Code is developed and distributed as open source software under the Apache License, Version 2.0. Contributions should be submitted as pull requests on the Github site. Developer guidelines can be found in the file DEVELOPING.md.

Programs

ippdoclint Man Page

The ippdoclint program validates document data in a variety of formats, allowing for automated testing of IPP clients.

ippfind Man Page

The ippfind program implements Bonjour/DNS-SD discovery of IPP printers and can be used to find and test specific printers. Among other things, it is used as part of the IPP Everywhere™ Printer Self-Certification test tools.

ippproxy Man Page

The ippproxy program implements a generic IPP Proxy interface that allows you to connect a local IPP, PCL, or G-code printer to an IPP Infrastructure Printer such as the ippserver program.

ippserver Man Page

The ippserver program implements most IPP standards and is commonly used for prototyping and automated testing. It provides a generic IPP Printer interface that allows you to share printers locally or using the IPP Shared Infrastructure Extensions. Printers can be configured to use authentication and/or to provide transforms using the included or third-party programs. A scriptable web interface allows for a variety of automated testing opportunities.

ipptool Man Page Test File Format

The ipptool program implements a generic IPP Client interface that allows a user to send different IPP requests and act based on the response from the Printer. Among other things, it is used as part of the IPP Everywhere™ Printer Self-Certification test tools.

ipptransform Man Page

The ipptransform program is a generic file conversion utility that is used primarily with ippserver to support rasterization of JPEG and PDF documents for IPP Everywhere and HP PCL printers.

ipptransform3d Man Page

The ipptransform3d program is a generic file conversion utility that is used primarily with ippserver to support slicing of STL and 3MF documents for 3D printers connected via USB.

Copyright © 2014-2018 by the IEEE-ISTO Printer Working Group.
Copyright © 2007-2018 by Apple Inc.
Copyright © 1997-2007 by Easy Software Products.

This software is provided under the terms of the Apache License, Version 2.0. A copy of this license can be found in the file LICENSE. Additional legal information is provided in the file NOTICE.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.