/ipdsbox

Java library for parsing IPDS data streams

Primary LanguageJavaMozilla Public License 2.0MPL-2.0

ipdsbox Build Status codecov.io Coverity Status

Java library for parsing IPDS data streams. The library is currently in an early design phase and may not be useful for anything. I'm currently not woking on this project. The project is not dead, but I'm currently involved in so many other projects that I don't have any time for ipdsbox.

This project provides a framework that allows you to implement a virtual IPDS printer. Each received IPDS command is transformed into a Java object. Acknowledge replies can be constructed using Java objects, transformed into IPDS data stream and than sent back to the server.

PPD/PPR protocol

LAN attached IPDS printers are using an special protocol named "PPD/PPR" (Page Printer Daemon / Page Printer Requester). This protocol encapsulates the native IPDS data stream for printers that are attached by TCP/IP (and not by SNA).

The specification of this protocol is (sadly) not publicy available. The specification is licenced by Ricoh to all members of the AFP Consortium. As the developer of ipdsbox is no member, the implementation of the PPD/PPR protocol in ipdsbox is based on tracing and inspecting the data stream (between a z/OS Host and an IPDS enabled printer).

Beware: Because of that it is likely that the behaviour of ipdsbox is not correct in all cases.

IPDS Command Sets

The IPDS architecture contains several command sets. The following table shows the command sets and the current status of the corresponding support of the IPDS command ("supported" means that ipdsbox can parse the IPDS command and create a specific Java object for it).

IPDS Command Hex Value Command Description Command Set Supported
AR X'D62E' Activate Resource Device Control
AFO X'D602' Apply Finishing Operations Device Control
BP X'D6AF' Begin Page Device Control
DF X'D64F' Deactivate Font Device Control
DUA X'D6CE' Define User Area Device Control
END X'D65D' End Device Control
EP X'D6BF' End Page Device Control
ISP X'D67E' Include Saved Page Device Control
ICMR X'D66B' Invoke CMR Device Control
LCC X'D69F' Load Copy Control Device Control
LFE X'D63F' Load Font Equivalence Device Control
LPD X'D6CF' Logical Page Descriptor Device Control
LPP X'D66D' Logical Page Position Device Control
MID X'D601' Manage IPDS Dialog Device Control
NOP X'D603' No Operation Device Control
PFC X'D634' Presentation Fidelity Control Device Control
RPO X'D67B' Rasterize Presentation Object Device Control
STM X'D6E4' Sense Type and Model Device Control
SHS X'D697' Set Home State Device Control
SPE X'D608' Set Presentation Environment Device Control
XOA X'D633' Execute Order Anystate Device Control
XOH X'D68F' Execute Order Home State Device Control
LE X'D61D' Load Equivalence Text
WTC X'D688' Write Text Control Text
WT X'D62D' Write Text Text
WIC X'D63D' Write Image Control IM-Image
WI X'D64D' Write Image IM-Image
WIC2 X'D63E' Write Image Control 2 IO-Image
WI2 X'D64E' Write Image 2 IO-Image
WGC X'D684' Write Graphics Control Graphics
WG X'D685' Write Graphics Graphics
WBCC X'D680' Write Bar Code Control Bar Code
WBC X'D681' Write Bar Code Bar Code
DORE X'D66C' Data Object Resource Equivalence Object Container
DDOFC X'D65B' Deactivate Data-Object-Font Component Object Container
DDOR X'D65C' Deactivate Data Object Resource Object Container
IDO X'D67C' Include Data Object Object Container
RRR X'D65A' Remove Resident Resource Object Container
RRRL X'D659' Request Resident Resource List Object Container
WOCC X'D63C' Write Object Container Control Object Container
WOC X'D64C' Write Object Container Object Container
BPS X'D65F' Begin Page Segment Page Segment
DPS X'D66F' Deactivate Page Segment Page Segment
IPS X'D67F' Include Page Segment Page Segment
BO X'D6DF' Begin Overlay Overlay
DO X'D6EF' Deactivate Overlay Overlay
IO X'D67D' Include Overlay Overlay
LCP X'D61B' Load Code Page Loaded Font
LCPC X'D61A' Load Code Page Control Loaded Font
LF X'D62F' Load Font Loaded Font
LFCSC X'D619' Load Font Character Set Control Loaded Font
LFC X'D61F' Load Font Control Loaded Font
LFI X'D60F' Load Font Index Loaded Font
LSS X'D61E' Load Symbol Set Loaded Font

XOH Orders

The IPDS command "Execute Order Home State" (XOH) ist a rather complex command that isused to execute orders when the printer is in Home State. The following table shows the orders and the current status of the corresponding support of the order ("supported" means that ipdsbox can parse the order and create a specific Java object for it).

Code Order Supported
X'0200' Deactivate Saved Page Group
X'0400' Define Group Boundary
X'1300' Eject to Front Facing
X'0700' Erase Residual Font Data
X'0500' Erase Residual Print Data
X'F300' Obtain Printer Characteristics
X'F500' Page Counters Control
X'0100' Print Buffered Data
X'0A00' Remove Saved Page Group
X'1500' Select Input Media Source
X'0E00' Select Medium Modifications
X'0900' Separate Continuous Forms
X'1600' Set Media Origin
X'1700' Set Media Size
X'0300' Specify Group Operation
X'0D00' Stack Received Pages
X'F200' Trace

Triplets

The following table shows the Triplets and the current status of the corresponding support of the Triplet ("supported" means that ipdsbox can parse the Triplet and create a specific Java object for it).

ID Name Supported
X'00' Group ID
X'01' Coded Graphic Character Set Global Identifier
X'02' Fully Qualified Name
X'4E' Color Specification
X'50' Encoding Scheme ID
X'5A' Object Offset
X'62' Local Date and Time Stamp
X'6E' Group Information
X'70' Presentation Space Reset Mixing
X'74' Toner Saver
X'75' Color Fidelity
X'79' Metric Adjustment
X'84' Font Resolution and Metric Technology
X'85' Finishing Operation
X'86' Text Fidelity
X'88' Finishing Fidelity
X'8B' Data Object Font Descriptor
X'8D' Linked Font
X'8E' UP3I Finishing Operation
X'91' Color Management Resource Descriptor
X'92' Invoke CMR
X'95' Rendering Intent