Printer Driver Communications Standard

Version 0.01

August 25, 2003

Authors (alphabetical)

Authors	Company	Email
Mark Hamzy (Editor)	International Business Machines	hamzy@us.ibm.com
Norm Jacobs	Sun	Norm.jacobs@sun.com
Till Kamppeter	Mandrake	till.kamppeter@gmx.net
Ira McDonald	High North	imcdonald@sharplabs.com
Glen Petrie	EPSON	glen.petrie@eitc.epson.com

Abstract (Ira)

Printers print.

Copyright 2003, Free Standards Group

Copyright Notice

Copyright (c) 2003 Free Standards Group

Permission is hereby granted, free of charge, to any person obtaining a copy of this documentation files, to deal in the documentation without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the documentation, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the documentation.

THE DOCUMENTATION IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE DOCUMENTATION OR THE USE OR OTHER DEALINGS IN THE DOCUMENTATION.

Table of Contents

1. Introduction	4

2. Background	4

3. Terminology and Acronyms	4

3.1 Conformance Terminology	4

3.2 Other Terminology	5

3.3 Acronyms	5

4. Requirements	5

5. Description	6

5.1 Common Job Properties	6

5.2 Non-Common Job Properties	13

5.3 Raster simulation	13

5.4 Discovery	13

5.5 Communication	13

5.6 C-API	13

5.7 Java-API	13

APPENDIX: X CHANGES < Editor >	13

Introduction

Printer not ready.
Could be a fatal error.
Have a pen handy?

-- Pat Davis

Currently, there are many printer drivers written for Linux.

Background (Glen)

Monolithic approach.

IJS simularities / divergence.

Why can PDC replace this.

Terminology and Acronyms (ALL)

Conformance Terminology (take from job ticket)

In this document, the uppercase terms “MUST”, “MUST NOT”, “REQUIRED”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” are intended to be interpreted as described in [RFC2119]

In this document, each conformance statement uses one of the terms:

Term	Meaning
MUST	Implementation support is REQUIRED for conformance to this specification.
SHOULD	Implementation support is RECOMMENDED for conformance to this specification.
MAY	Implementation support is OPTIONAL for conformance to this specification.

In this document, each operation, object, or attribute is defined as:

Term	Meaning
REQUIRED	Each implementation MUST support object operations or attributes.
RECOMMENDED	Each implementation SHOULD support object operations for interoperability
OPTIONAL	Each implementation MAY support object operations or attributes .

Other Terminology

Table 4.0 Miscellaneous Terms

Term	Meaning

Acronyms

Table 5.0 Acronyms

Acronyms	Meaning	Source
FSG	Free Standards Group	http://www.freestandardsgroup.org/
FSG/OP	Free Standards Group – Open Printing	http://www.openprinting.org/
PDC	Printer Driver Communications	
JP	Job Properties	
CJP	Common Job Properties	
VJP	Non-Common Job Properties	

Requirements (ALL)

job ticket & papi support

platforms: embedded devices. high end production printing

printer: injet printers. high end laserjet printers.

support bi-directional communications

support device fonts

support high level drawing calls

Print driver model (Mark)

Job properties are properties that can change on a per-job basis. For example, someone can submit a color print job that uses legal paper while someone else can submit a monochrome print job on A4 paper to the same print queue. Every printer driver shares a set of common job properties such as Form, Media, and Orientation. Currently, each printer driver uses different names for those job properties. One driver can use “Form=Letter” while another uses “form=LTR”.

Common Job Properties

Common Job Properties is the standardization of job properties that should be understood by all printer drivers.

Key	Value	Notes
BitsPerColor	n,n,n or n	one to number of color planes
Color	Color	Red Green Blue (BitsPerPel=8,8,8)
	Monochrome	Greyscale (BitsPerPel=8)
	Binary	Black/White (BitsPerPel=1)
Copies	1	copies is supported
	integer	
	None	copies
InputTray	AutoSelect	
	AnySmallFormat	
	AnyLargeFormat	
	Bottom	Lower is an alias
	BypassTray	
	BypassTray-n	
	Continuous	Fanfold or perforated
	Disc	Tray that contains media such as CD or DVD
	Disc-n	
	Envelope	
	Envelope-n	
	Front	
	InsertTray	
	InsertTray-n	
	LargeCapacity	Main is an alias
	LargeCapacity-n	
	Left	
	Middle	
	Rear	
	Right	
	Roll	
	Roll-n	
	Side	
	Top	Upper is an alias
	Tray	Cassette, SheetFeeder is an alias
	Tray-n	Cassette-n, SheetFeeder is an alias
	None	
MediaSize	na_letter_8.5x11in	
	iso_a4_210x297mm	
	...	
MediaUnprintableMargins	integerXintegerXintegerXintegerUNITS	The four unprintable areas on the page in the following order: top, right, bottom, left. This is read-only.
MediaMargins	integerXintegerXintegerXintegerUNITS	defaults to MediaUnprintableMargins
MediaColor	RxGxB	This is read-only.
MediaBackCoating	Glossy	
	HighGloss	
	SemiGloss	
	Satin	
	Matte	
	Inkjet	
	None	
MediaFrontCoating	Glossy	
	HighGloss	
	SemiGloss	
	Satin	
	Matte	
	Inkjet	
	None	
MediaGrain	Fine	
	Medium	
	Coarse	
	None	
MediaTooth	Fine	
	Medium	
	Coarse	
	None	
MediaType	Plain	
	Stationery	
	TransparencyEnvelope	
	EnvelopePlain	
	EnvelopeWindow	
	Continuous	
	ContinuousLong	
	ContinuousShort	
	TabStock	
	PreCutTabs	
	FullCutTabs	
	MultiPartForms	
	Labels	
	MultiLayer	
	Screen	
	ScreenPaged	
	Photographic	
	CardStock	
	Other	
	None	
NumberUp	1x1	
	integerXinteger	
	None	
NumberUpPresentationDirection	TorightTobottom	
	TobottomToright	
	ToleftTobottom	
	TobottomToleft	
	TorightTotop	
	TotopToright	
	ToleftTotop	
	TotopToleft	
	None	
OutputBin	Top	
	Booklet	
	Bottom	
	Center	
	FaceDown	
	FaceUp	
	FitMedia	
	LargeCapacity	
	Left	
	MailBox-n	
	Middle	
	MyMailbox	
	Rear	
	Right	
	Side	
	Stacker-n	
	Top	
	Tray-n	
	None	
PrintQuality	Normal	
	Economy	
	Draft	
	High	
	Fine	
	Photo	
	None	
Resolution	integerXinteger	
Rotation	Portrait	
	Landscape	
	ReversePortrait	
	ReverseLandscape	
	None	
ScalingType	None	
	FitToPage	
	RotateAndOrFit	
	Clip	
ScalingPercentage	None	
	double	100 or 1000 multiple?
SheetCollate	SheetUncollated	
	SheetCollated	
	SheetAndJobCollated	
	SheetUncollated	
Sides	OneSidedFront	
	OneSidedBackflipX	
	OneSidedBackflipY	
	TwoSidedFlipX	
	TwoSidedFlipY	
	None	
StitchingPosition	None	
	integer	
StitchingReferenceEdge	Top	
	Bottom	
	Left	
	Right	
	None	
StitchingType	Corner	
	Saddle	
	Side	
	None	
StitchingCount	1	
	integer	
	None	
StitchingAngle	0	
	integer	
	None	

While it would be nice to require every driver to at least understand the above Common Job Property keys and values, we have decided to allow some of the keys to be optionally supported.

Key	Required/Recommended/Optional
Color	Required
Copies	Recommended
Form	Required
FormUnprintableMargins	Required
InputTray	Recommended
MediaColor	Optional
MediaBackCoating	Optional
MediaFrontCoating	Optional
MediaGrain	Optional
MediaTooth	Optional
MediaType	Recommended
NumberUp	Optional
NumberUpPresentationDirection	Optional
OutputBin	Recommended
PrintQuality	Optional
Resolution	Required
Rotation	Recommended
ScalingType	Optional
ScalingPercentage	Optional
SheetCollate	Optional
Sides	Optional
StitchingPosition	Optional
StitchingReferenceEdge	Optional
StitchingType	Optional
StitchingCount	Optional
StitchingAngle	Optional
Trimming	Optional

If a job property is Required and it is not handled by the driver, then the print job or print related query will fail. The other two categories, Recommended and Optional, are statements that tell the driver what will give the user a better print experience.

The job properties that are not Required are handled by the print sub-system (either by the driver or a higher level component like a rasterizer). They fall into a number of categories. The first one is the set of job properties that can be handled by the driver or simulated by the rasterizer. An example of this is “Copies” or “NumberUp”. The driver can handle these properties through commands sent to the print device. Otherwise, the rasterizer will simulate the property to the driver. For example, if “Copies=2” appears in the job properties and the driver does not understand “Copies”, then then rasterizer will send two print jobs to the driver. If it is handled by the driver, then the driver will only receive one print job. Another set of properties that cannot be simulated by the rasterizer will only allow a minimal level of support. This support is limited to one default value that can be enumerated or set. For example, “SheetCollate” can only be “SheetCollate=SheetUncollated” if the driver does not understand collation.

Non-Common Job Properties

All of the other job properties for a printer driver falls in the category of non-common job properties.

Raster simulation

Handle high level drawing call

Otherwise, call is broken down into series of lower level drawing calls

Otherwise, a series of banded bitmaps is received

Discovery

The print sub-system needs some way to know what driver are installed that can handle this standard.

Registry in etc file

Certain directory

TCP/IP daemon

Communication

Separation of driver from application in regards to licensing

C-API

Java-API

APPENDIX: X CHANGES < Editor >

Date	Affected Version	Author	Change

FSG Open Printing – Printer Driver API

Page 13 of 14

Glen Petrie

2003-07-25T14:58:05