HPInc / jipp

A Java-compatible implementation of IPP
MIT License
151 stars 42 forks source link
ipp ipp-protocol java kotlin printing

CircleCI CodeCov Maven Central Core Docs PDL Docs Kotlin ktlint

JIPP: A Java-compatible IPP library

This project includes:

jipp-core features:

What could I do with this?

The API is Java-compatible but implemented in Kotlin.

Usage

  1. Add the current version of JIPP to your project
    dependencies {
    compile 'com.hp.jipp:jipp-core:0.7.16'
    compile 'com.hp.jipp:jipp-pdl:0.7.16' // Only needed if transforming PDLs
    }
  2. Create an IppClientTransport or IppServerTransport (see example HttpIppClientTransport.java)
  3. Use the transport to send and receive IppPacket objects, e.g.:
    URI uri = URI.create("http://192.168.1.100:631/ipp/print");
    IppPacket printRequest = IppPacket.printJob(uri)
        .putOperationAttributes(documentFormat.of("application/pdf")))
        .build();
    transport.sendData(uri, new IppPacketData(printRequest, new FileInputStream(inputFile)));

Sample Applications

jprint

Demonstrates a simple print engine. To run:

# build the app
./gradlew jprint:build

# unzip in the current directory
unzip -o ./sample/jprint/build/distributions/jprint-*.zip

# Use IPP to print a file to the supplied HTTP/IPP endpoint.
# (The printer must natively support the supplied file type.)
jprint-*/bin/jprint -p sample.pdf ipp://192.168.1.102:631/ipp/print

jrender

An example of rendering a PDF to PWG-Raster or PCLm. To run:

# build the app
./gradlew jrender:build

# unzip in the current directory
unzip -o ./sample/jrender/build/distributions/jrender-*.zip

# Convert a PDF-file to PWG-Raster.
jrender-*/bin/jrender sample.pdf sample.pwg

# Convert a PDF-file to PCLm.
jrender-*/bin/jrender sample.pdf sample.pclm

API Maturity

Until 1.0, APIs may still be changed in non-backwards-compatible ways. See HISTORY.md for more details.

Dependencies

jipp-core's only dependencies are JDK 8+ and the current Kotlin runtime.

Building

To build, run ./gradlew build.

A full build of this project requires python (2.x) and dot to generate dependency graphs.