OpenPrinting

By: Glen W. Petrie Senior Software Architect EPSON

1 15-17 November 2004 Free Standard Group: OpenPrinting Agenda

Introduction

Working Group Reviews Architecture Job Ticket Application Interface Driver – Vector/Raster Status Monitoring Print Channel Monitor

Questions

2 6-10 July 2004 Introduction

3 15-17 November 2004 Free Standard Group: OpenPrinting Organization

Free Standards Group

OpenPrinting

America/Europe Japan

Steering Committee Steering Committee

Architecture Vector Driver

Job Ticket Status Monitoring

Application Interface Print Channel Monitor

Raster Driver

4 6-10 July 2004 Free Standard Group: OpenPrinting Objectives/Mission

“Standardizing on a Scalable Print Environment in .”

Mission Statement The goal of the OpenPrinting is to develop and promote a set of standards that will address the needs of desktop to enterprise-ready printing; including management, reliability, security, scalability, printer feature access and network accessibility.

http://www.openprinting.org/

5 6-10 July 2004 Free Standard Group: OpenPrinting Objectives

OpenPrinting : Input OpenPrinting accepts input from interested parties in IT industry, government, education and the open source community

OpenPrinting : Output Draft specification and implementation released together Public review of work Once implementation has been accepted by both upstream authors and at least two vendors, then it is “real”:

A published specification that points to a globally utilized, open source implementation

6 6-10 July 2004 Free Standard Group: OpenPrinting OpenPrinting Reference Model

Preliminary Reference Model

Application JTAPI

Command/Control Print manager Data

Call Back’s

Spooler External or Signal Print Some cases data Renderer include call back Transform

Printer PnP Driver Capability

SM PCM

standard Protocol Plug-ins Vendor Protocol Plug-ins 7 6-10 July 2004 USB Printer Free Standard Group: OpenPrinting OpenPrinting Reference Model

Driver

SM Job Xfer Capability

PCM

1284.4 IPP USB 1394 Epson

Printer Called cat

8 6-10 July 2004 Free Standard Group: OpenPrinting OpenPrinting Reference Model

Service Discovery model Driver

SM Job Xfer Capability

PCM

Rendezvous RR 1394

Printer Called cat

9 6-10 July 2004 Free Standard Group: OpenPrinting Working Groups and Objectives

Steering Committee Provide overall priorities and top-level coordination. Architecture Develop a modern Print System for Linux. Job Ticket API (JTAPI) To create/consume job tickets; edit job tickets; write/export job tickets. Application/Program Interface (PAPI) Provide applications print services neutral interface. Printer Driver (Raster/Vector) (PDAPI) Provide a neutral interface for printing to any printers Status Monitoring API (SMAPI) Provide a neutral interface for acquiring static and real-time printer status Print Channel Monitor API (PCMAPI) Provide a neutral interface for any output portal/destination.

10 6-10 July 2004 Free Standard Group: OpenPrinting Activities

Oct 25-26, 2001 – Print Summit Meeting Began discussion of OpenPrinting and needs.

June 10, 2003 – FSG Portland Face-to-Face Meeting Defined Reference Model

Nov 21, 2004 – FSG San Antonio Face-to-Face Meeting Working Group Status and Interaction

Weekly Phone Meetings – all working groups

Email Communications – all working groups

11 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting

Thanks

12 6-10 July 2004 Steering Committee

13 15-17 November 2004 Free Standard Group: OpenPrinting Steering Committee & Objectives

Steering Committee Divided into two major teams US/Europe Japan

Objectives Provide oversight to OpenPrinting Activities Provide direction setting to OpenPrinting Activities Provide coordination between OpenPrinting Working Groups Set priorities for OpenPrinting Activities Release Specification/API from OpenPrinting Working Groups Report to FSG Board on OpenPrinting Activities

14 6-10 July 2004 Free Standard Group: OpenPrinting Steering Committee Information

Monthly FSG Steering Committee conference calls First Monday of each month at 1:00 PM US Eastern for 1-2 hours

To subscribe to FSG Steering Committee mailing list: http://freestandards.org/mailman/listinfo/printing-sc

To post a message to FSG Steering Committee mailing list [email protected]

To view FSG Steering Committee mailing list archives http://freestandards.org/mailman/listinfo/printing-sc

To find FSG Architecture documents ftp://ftp.pwg.org/pub/pwg/fsg/steering_committee

Participants Japan US / Europe Takaaki Higuchi (Sun) Mark Hamzy (IBM) Osamu Mihara (FUJI XEROX Printing Systems) Norm Jacobs (Sun) Keisho Shida (Canon) Ira McDonald (High North Inc) Yasumasa Toratani (Canon) Glen Petrie (Epson)

15 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting Thanks from the Steering Committee

16 6-10 July 2004 Architecture

17 15-17 November 2004 Free Standard Group: OpenPrinting What is OpenPrinting Architecture ?

OpenPrinting Architecture is a: Reference Model of the overall solution High-Level Architecture abstracting interfaces between components Detailed Architecture defining interfaces between components Architecture elements contain: Reference Model (RM) Overall system diagram Functional decomposition into and description of subsystems. Identification of data and/or control and/or interface between subsystems and/or external systems. High-Level Architecture (HLA) A glossary of terminology. Analysis and documented Use-Cases and requirements. Identification of applicable/recommended standards for subsystem interfaces. Identification of recommended infrastructure for integrating products. Detailed Architecture (DA) Specification of system structure (classes, packages, associations – using UML). Specification of system behavior (activity and sequence diagrams – using UML). Identification of the system process structure. Identification of inter-process communication mechanisms.

An OpenPrinting Architecture: Guides development of abstract interfaces.

18 6-10 July 2004 Free Standard Group: OpenPrinting OpenPrinting Architecture Objectives

Develop a modern Print System for Linux Document realistic Use-Models Extract and analyze requirements Identify applicable, existing, interface specifications for the requirements Apply to multiple print services or be print service neutral. Complete and document Reference Model, High-Level Architecture, and Detailed Architecture.

19 6-10 July 2004 Free Standard Group: OpenPrinting Use-Cases/Use-Models

ts s en n m le tio m e p ils p ra ir m ta e g qu xa e xc ia e E D E D R 1. Mobile Printing Mobile printing by reference with document data transformation. 2. PDA Printing PDA printing directly with document content. 3. Desktop Personal (Consumer) Printing Print to low end inkjet printer from an application. 4. Desktop Small-Office/Home-Office Printing Print to mid-volume laser printer, office inkjet and impact printers. 5. Office Desktop Printing Document from an application is printed on a printer shared by 3-5 workplaces. 6. Central (Print Room) Office Printing Mid to large volume printing from document repository with data transformation and post finishing 7. Desktop File (Direct) Printing Print to print device directly form the file-manager/shell-script without going through an application. 8. Pay-for-Print Printing Print using a job ticket from a print driver through a print spooler to a mid-range color laser printer. 9. Production Printing Large volume transactional printing to high-speed production printer. 10. Graphics Art Printing Large volume journal printing to high-speed printing press. 20 6-10 July 2004 Free Standard Group: OpenPrinting Mobile Printing Use-Model

1.0 Mobile Printing Mobile printing by reference with document data transformation. Example Use Model: Alice goes shopping for a new digital camera to the Fine Camera store downtown. She takes along a magazine review of the new Bright 3000. The sales clerk at the Fine Camera store tells Alice that she would probably prefer the Orion 777. Alice uses her mobile hand-held to browse the Web site of Bright and find the URL for the detailed specs of the Bright 3000. She uses the public access printer in the Fine Camera store to print the Bright 3000 specs. Sure enough, the Orion 777 is a better choice.

Details: (1) Use Model Diagram: Alice turns on her mobile hand-held and hits the 'I' (Internet) button. The mobile ------1. MC-CP: Internet browse for content URL | | hand-held starts a Web browser application, which connects to Alice's wireless | Transform | 2. MC-TP: Bluetooth discovery of wireless printer | Service | 3. MC-TP: Bluetooth Print-By-Reference of content URL Internet service provider (ISP) over a 14.4Kbps cellular modem. Alice types the | (TS) | | | 4. TP-PS: IPP Print-URI of content URL ------5. PS-CP: HTTP Get of content URL Bright URL (from the magazine review) into her Web browser and hits the Enter ^ | 6. PS-TS: Convert content data from HTML to PCL (6) 7. PS-TP: IPP Print-Job of converted content data key. The Web browser connects to Bright's home page over the Internet (via the | v 8. TP-MC: Bluetooth print completed notification ------HTTP proxy in the cellular ISP's firewall). Alice searches for the Bright 3000 specs | | ! | | Print | ! Content | (available in HTML) and copies the URL into her GUI clipboard. | Service |<------+(5)------! Provider | | (PS) | ! (CP) | | | ! | ------E ^ | ADSL ISP T1 ISP | t | | (600Kbps) ( ------) (1.5Mbps) | Alice hits the 'P' (Print) button. The mobile hand-held starts a print application, h | | ( ) | e | | ( ) | R (4) (7) ( INTERNET ) (1) which discovers the store's public access printer over Bluetooth using FSG/OP N | | ( ) | E | | ( ) | PAPI (which does Bluetooth device discovery) and then forms an ad-hoc wireless T | | ( ------) Cellular ISP | | v (14.4Kbps) v ------Personal Area Network (PAN) with the Target Printer. | |<------(2)------>! | | Target | ! Mobile | | Printer |<------(3)------! Client | ♦♦♦ | (TP) | ! (MC) | | |------(8)------>!(handheld) | | | Bluetooth PAN ! | Requirements for this Use Model: ------The FSP/OP Architecture MUST support: Administrative configuration of Print Services and their associations with Target Printers using FSG/OP PAPI; Administrative configuration of Target Printers and their associations with Print Services using FSG/OP PAPI; Dynamic discovery of network (IP, Bluetooth, IRDA, etc.) Print Services and Target Printers using FSG/OP PAPI; Multiple print protocol bindings of FSG/OP PAPI (for direct-connect and non-IP network printing); Print-by-reference operations (for example, printing from low-bandwidth mobile devices); Print-by-value operations (for example, printing of converted or local content); Content conversion by FSG/OP Transform Services (for example, reference printing); Job and Printer event notification (for example, job complete, printer intervention required, etc.). 21 6-10 July 2004 Free Standard Group: OpenPrinting What’s next - schedule

OpenPrinting Requirements Document Aug 2004 - Complete prioritization of identified sub-systems Sept 2004 - Complete Reference Model Alpha Release

The Architecture has decided to move all discussion to email. Activities to resume in December

Nov 2004 - Integrate Use Models from FSG-Japan Use-Models Mar 2005 - Complete Detailed Description for Use Models May 2005 - Complete Requirements for Use Models Aug 2005 - Complete Common Requirements & Reference Model 1.0

High-Level Architecture/Reference Model May How2006 to accelerate - Completed document the process and schedule? Funding ! More Participants !

22 6-10 July 2004 Free Standard Group: OpenPrinting Architecture Working Group Information

Weekly FSG Architecture conference calls Thursday at 3:00 PM US Eastern for 1-2 hours

To subscribe to FSG Architecture mailing list: http://freestandards.org/mailman/listinfo/printing-architecture

To post a message to FSG Architecture mailing list [email protected]

To view FSG Architecture mailing list archives http://freestandards.org/mailman/listinfo/printing-architecture

To find FSG Architecture documents ftp://ftp.pwg.org/pub/pwg/fsg/archtiecture/

Participants Claudia Alimpich (IBM) Till Kamppeter (MandrakeSoft) Jody Goldberg (Gnome) Ira McDonald (High North Inc) Mark Hamzy (IBM) - chair Glen Petrie (Epson) Tom Hastings (Xerox) Pete Zannucci (IBM) Norm Jacobs (Sun)

23 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting Thanks from the Architecture Team

24 6-10 July 2004 Job Ticket

25 15-17 November 2004 Free Standard Group: OpenPrinting JTAPI & Objectives

What is JTAPI ? JTAPI stands for: Job Ticket Application Programming Interface Pronounced “jay-tappy”, “Job Ticket API”, or “jay tee API” A job ticket contains: Instructions describing how to process and/or print a job Information about the results of a job as it is processed and/or printed

A JTAPI job ticket is: an electronic replacement of manual hard copy instructions and information

JobTicket Objectives JDF To create and consume job tickets PWG

Proprietary JTAPI To be job ticket syntax neutral etc. Job Ticket API To isolate the application from the content of the job ticket Process Application To be programming language neutral To import and export multiple job ticket formats 26 6-10 July 2004 Free Standard Group: OpenPrinting Existing Job Ticket Formats

Technical Review CIP4 JDF (Job Definition Format) Job Ticket Defined by CIP4, a world wide standards body with over 150 members Is open, extensible, XML-based job ticket standard JDF Specification versions 1.0 released April 2001 1.1 released April 2002 1.2 released May 2004 1.3 to be released Mid 2005

PWG Job Ticket Defined by PWG Semantic Model 1.0 Is open, extensible, XML-based job ticket standard

27 6-10 July 2004 Free Standard Group: OpenPrinting JTAPI Object Model

JobDocumentPage

JobTicketInfo 11 Job 10..* Document

1 1 1 1 1111 111 1

0..* 0..* 0..* 0..* 0..* 0..* 0..* 0..* 0..* 0..* 0..* 0..* ContactInfo Destination Subscription SeparatorSheet PageRange ForcePage InsertSheet PageOverrides

1 1 0..1 0..1 Media

JobDocumentPage

1 1 1 1 1 1

0..1 0..1 0..1 0..1 0..1 0..1 Media Folding HoleMaking Stitching Binding Trimming 28 6-10 July 2004 Free Standard Group: OpenPrinting JTAPI Version 1.0 Release

Completed C Header Files Each object in separate files Common extensible method for attributes Data/object model that is object oriented Defines objects that are familiar to the printing industry Job, Document, Insert Sheet, Media, Stitching, Hole Making, etc. Defines relationship between objects Defines operations to be performed on objects Defines attributes of objects Defines well-known enumerated values of all attributes

29 6-10 July 2004 Free Standard Group: OpenPrinting JTAPI –Version 1.0 Release Details (1)

JobTicketInfo fsgjtNewJobTicketInfo Job Creates a JobTicketInfo object. Used when a new job fsgjtNewJob ticket is being created without a Job object and not from an Creates a Job without providing a Document. existing job ticket. fsgjtNewJobTicketInfoFromURI fsgjtNewJobFromDocument Creates a Job containing the provided Document Creates a JobTicketInfo object from the job ticket file at the provided URI. Other JTAPI objects are also created based on the information in the job ticket file. fsgjtNewJobTicketInfoFromBuffer Creates a JobTicketInfo object from the provided buffer that contains a job ticket. Other JTAPI objects are also Document created based on the information in the job ticket buffer. fsgjtNewDocument fsgjtNewJobTicketInfoFromJob Creates a Document object. Creates a JobTicketInfo object using the provided Job object. Used when a new job ticket is being created. The fsgjtNewDocumentFromURI Job object must be created first. Creates a Document object using the provided URI that fsgjtWriteJobTicketToBuffer contains the document data. Writes a job ticket to the provided buffer. fsgjtWriteJobTicketToURI Writes a job ticket at the provided URI.

30 6-10 July 2004 Free Standard Group: OpenPrinting JTAPI –Version 1.0 Release Details (2)

ContactInfo ForcePage fsgjtNewContactInfo fsgjtNewForcePage Creates a ContactInfo object having the specified name. Creates a ForcePage object haing the specified page and sheet side.

Subscription fsgjtNewSubscription InsertSheet Creates a Subscription object having the specified fsgjtNewInsertSheet notification URI. Creates a InsertSheet object. fsgjtNewSubscriptionForEvent Creates a Subscription object having the provided notification URI and event. Destination fsgjtNewDestination Creates a Destination object with a specific URI. SeparatorSheet fsgjtNewSeparatorSheet Creates a SeparatorSheet object to be placed at the provided location.

31 6-10 July 2004 Free Standard Group: OpenPrinting JTAPI –Version 1.0 Release Details (3)

Media PageRange fsgjtNewMedia fsgjtNewRangRange Creates a Media object using the specified name. Creates a PageRange object.

Folding fsgjtNewFolding Creates a Folding object having the specified folding type.

HoleMaking fsgjtNewHoleMaking Creates a HoleMaking object having the specified hole count and reference edge.

Stitching fsgjtNewStitching Creates a Stitching object having the specified stitch type.

32 6-10 July 2004 Free Standard Group: OpenPrinting JTAPI –Version 1.0 Release Details (4)

Attribute Generic support for all object/attributes

fsgjtNewAttribute fsgjtGetNumValues Creates a new Attribute object having the provided attribute Get the number of values that the Attribute contains. name, value type, and value. fsgjtGetValueType fsgjtDestroyAttribute Returns the type of the Attribute's values. Free the memory used by the Attribute. fsgjtReplaceValue fsgjtAddValue Replaces the existing value(s) for this Attribute. Add an additional value to this Attribute. fsgjtResetToFirstValue fsgjtGetName Reset the iterator to point to the first of the Attribute. Get the name of the Attribute. fsgjtGetNextValue Return the Attribute's next value.

33 6-10 July 2004 Free Standard Group: OpenPrinting JTAPI –Version 1.0 Release Details (5)

Miscellaneous / Helper

fsgjtDestory Free the memory used by the an object. fsgjtGet Get the Attribute having the specific name. fsgjtSet Set the Attribute having the specific name. fsgjtSetIntegerAttribute Convenience function for setting an integer attribute. fsgjtSetObjectAttribute Convenience function for setting an object attribute. fsgjtSetObjectAttributeList Convenience function for setting an object list. fsgjtSetStringAttribute Convenience function for setting a string attribute. fsgjtSetStringAttributeList Convenience function for setting a string list.

34 6-10 July 2004 Free Standard Group: OpenPrinting JTAPI - Version 1.0 – Enumerations

Enumerations BindTypeEnum MediaPrePrintedEnum BooleanEnum* MediaTypeEnum* CollateEnum OutputBinEnum CompressionEnum PageDeliveryEnum ContactInfoRoleEnum PositionEnum FeedOrientationEnum PresentEnum FitPolicyEnum PresentationDirectionEnum FoldTypeEnum PrintContentOptimizeEnum HoldEnum PrintQualityEnum* ImageAlignmentXEnum ImageAlignmentYEnum ReferenceEdgeEnum InputTrayNameEnum* RotationEnum* InsertSheetContentEnum SeparatorSheetEnum JobTicketTypeVersionEnum* SheetSideEnum JogOffsetEnum SidesEnum* LengthUnitEnum* StitchingTypeEnum* MandatoryAttributesEnum SubscriptionEventEnum MediaCoatingEnum TrimmingTypeEnum MediaColorEnum ValueTypeEnum*

35 6-10 July 2004 Free Standard Group: OpenPrinting Accomplishments 2002

Introduction Feb 2002 Began job ticket discussions in FSG Open Print June 2002 Initial JTAPI proposal Chartered FSG JT working group Nov 2002 Created IPP to JDF mapping table In cooperation with PODi and CIP4 Digital Printing working groups Dec 2002 Prioritized features/functions of JTAPI IBM ships first generation C JTAPI product In a job submission GUI and printer control unit product Based on initial JTAPI specification Based on early version of JDF ICS Specification for Digital Printing

36 6-10 July 2004 Free Standard Group: OpenPrinting Accomplishments 2003

Introduction May 2003 Completed detailed JTAPI UML diagrams 19 objects and 33 enumerations 20+ draft versions June 2003 Defined subset of JTAPI 1.0 content for Alpha version Nov 2003 Completed version 0.82 JTAPI Specification Started “C” language header files Initial contribution from IBM Dec 2003 IBM ships second generation C JTAPI product IBM ships first generation Java JTAPI product

37 6-10 July 2004 Free Standard Group: OpenPrinting Accomplishments 2004

JTAPI Software Development White Paper May 2004 - Draft white paper completed May 2004 - Completed and distributed to FSG/Japan

JTAPI Version 1.0 Specification Oct 2004 - Updated JTAPI global UML diagrams Oct 2004 - Updated JTAPI Version 1.0 compliant C header files Oct 2004 - Updated Version 1.0 Specification Nov 2004 - Review Specification

JTAPI Version C Header Files Nov 2004 - Review headers Dec 2004 - Finalize requirement / definition document

JTAPI Version 1.0 Specification/Header Release Jan 2005 - Release Specification and headers

38 6-10 July 2004 Free Standard Group: OpenPrinting JT Working Group Information

Weekly FSG Job Ticket conference calls Tuesdays at 3:00 PM US Eastern for 1-2 hours

To subscribe to FSG Job Ticket mailing list: http://freestandards.org/mailman/listinfo/printing-jobticket

To post a message to FSG Job Ticket mailing list [email protected]

To view FSG Job Ticket mailing list archives http://freestandards.org/mailman/listinfo/printing-jobticket

To find FSG Job Ticket documents ftp://ftp.pwg.org/pub/pwg/fsg/jobticket/

Participants Claudia Alimpich (IBM) – chair Jody Goldberg (Gnome) Tom Hastings (Xerox) Till Kamppeter (Mandrakesoft) Ira McDonald (High North) Glen Petrie (Epson)

39 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting

Thanks from the JTAPI Team

40 6-10 July 2004 Application Interface

41 15-17 November 2004 Free Standard Group: OpenPrinting PAPI & Objectives

PAPI stands for: Printing Application Programming Interface Pronounced “pappy” or “P.A.P.I.”

PAPI contains: Data Structures for interacting with basic print service objects. Functions to perform various operations against a print service or it's objects.

PAPI is an API for applications to use to perform print service interaction.

Objectives Provide applications a means of interacting with print services without being tied to a particular service or protocol Allow a rich, extensible set of information to flow between application and print service Support a rich enough set of operations to be useful to most applications with printing needs

42 6-10 July 2004 Free Standard Group: OpenPrinting PAPI Overview

Provides abstraction of server, queues (printers and classes), and jobs.

High-level API focuses on providing a common interface to multiple printing systems and protocols.

Uses extensible attribute sets based on IPP for representing queue and job information. Multi-valued and typed

Currently supports Server connection (and authentication were applicable) Basic queue operations: enumerate, query,enable, disable, modify, enumerate/purge jobs Basic job operations: submit, stream, query, cancel, hold, release, modify

43 6-10 July 2004 Free Standard Group: OpenPrinting PAPI Details

Data types introduced by the PAPI: Service API papi_status_t status/error code enumeration papiServiceCreate papi_service_t server/service connection create a new service object for submitting jobs, listing papi_printer_t printer object/handle/context printers, etc papi_job_t job object/handle/context papiServiceDestroy papi_attribute_t object attributes destroys a service object and all associated resources papi_stream_t stream object/handle/context papiGet*() / papiSet*() papi_job_ticket_t job ticket Get or set the corresponding service object attributes papi_filter_t filter for limiting printer lists (UserName, Password, Encryption, AuthCB, AppData)

Attribute API : Miscellaneous API : papiAttributeListAdd / papiAttributeListAdd* papiStatusString Adds a single attribute (and value) to an attribute list Return a textual representation of a Supported types include- String, integer, boolean, range, papi_status_enumeration resolution, datetime, collection, metadata papiLibrarySupportedCalls papiAttributeListGet* Enumerate all papiCalls that do not simply return Retreive the value associates with an attribute PAPI_OPERATION_NOT_SUPPORTED papiAttributeListFind papiLibrarySupportedCall Search for an attribute in a list Determine if a specific function is supported by the implementation papiAttributeListGetNext Walk through an attribute list papiAttributeListFromString create/append an attribute list using a text-based format PapiAttributeListToString Convert an attribute list to a text base string form papiAttributeListFree Deallocate resources associated with an attribute list 44 6-10 July 2004 Free Standard Group: OpenPrinting PAPI Details

Job API: Printer API : papiJobSubmit / papiJobSubmitByReference papiPrintersList Submit a print job either immediately copying or postponing copy Retrieves a list of printer/class queues of the job data papiPrinterQuery papiJobValidate Queries for detailed information about a printer objec Verify that the document format and job attributes are valid for and PapiPrinterAdd / papiPrinterRemove (new) supported by the designated print queue Creates/destroys printer object papiJobStreamOpen / papiJobStreamWrite / papiPrinterModify papiJobStreamClose Sets printer object attributes Open/write/close a stream for printing data on-the-fly papiPrinterPause / papiPrinterResume papiJobQuery Stop and start job processing on a printer object Request job information from print service papiPrinterEnable / papiPrinterDisable (new) papiJobModify Stop and start job queueing on a printer object Modifies the job attributes papiPrinterPurgeJobs papiJobCancel Cancels all jobs on a printer Cancels a print job papiPrinterListJobs papiJobHold / papiJobRelease / papiJobRestart Lists jobs on a printer Hold, release, or restart a print job papiPrinterGetAttributeList Retreive the corresponding attribute list from a job object for Retrieve an attribute list from printer object further lookup or enumeration using the Attribute interface PapiJobPromote (new) papiPrinterListFree / papiPrinterFree Deallocate resources associated with a printer object or list Promote a print job of printer objects papiJobGetAttributeList Retreive the corresponding attribute list from a job object for further lookup or enumeration using the Attribute interface papiJobGet Retreive the corresponding PrinterName, Id or JobTicket from a job object papiJobListFree / papiJobFree Free a job object of list of job objects and their associated resources 45 6-10 July 2004 Free Standard Group: OpenPrinting PAPI Status & Plans

Status Published v0.91 of specification Released PAPI based code on SourceForge PAPI dynamic library PAPI over CUPS BSD/SYSV print commands implemented on top of the PAPI Released PAPI over RFC-1179 support What’s next Expand functionality in PAPI Administrative operations Document object Implement and Release PAPI over IPP support Release IPP server implemented over PAPI Integrate support for various Open Source projects: GNOME, KDE, Open Office, Mozilla, Samba, etc.

46 6-10 July 2004 Free Standard Group: OpenPrinting PAPI Working Group Information

To subscribe to FSG PAPI mailing list: http://freestandards.org/mailman/listinfo/printing-spool

To post a message to FSG PAPI mailing list [email protected]

To view FSG PAPI mailing list archives http://freestandards.org/mailman/listinfo/printing-spool

To find FSG PAPI documents http://sourceforge.net/projects/openprinting

Participants Norm Jacobs (Sun) – chair Alan Hlava (IBM) Mike Sweet (Easy Software) Ira McDonald (High North Inc) Glen Petrie (Epson)

47 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting

Thanks from the PAPI Team

48 6-10 July 2004 Vector Printer Driver

Osamu MIHARA OpenPrinting WG Japan/Asia Fuji Xerox Printing Systems Co. Ltd. 15-17 November 2004

49 15-17 November 2004 Free Standard Group: OpenPrinting What is a Vector Printer Driver?

Called by render engine, such as Ghostscript or X print server, to convert spool data to PDL. Generates PDL using higher level graphics commands, instead of rasterized bitmap image.

50 6-10 July 2004 Free Standard Group: OpenPrinting Objectives

Performance Optimization Achieve full speed printing on fast laser printers Utilizes graphical acceleration feature supported by printer controllers

Data Size Optimization Reduces size of print data using high level graphics commands. Contributes to reduce network bandwidth and increase through-put

Print Quality Optimization Utilizes printer’s graphics quality enhancement technology by sending vector graphics command Color Optimization Driver can recognize the kind of graphics primitives and switch color scheme – natural color for bitmaps and vivid colors for graphics and text. Independent Design from Rendering Engine Single driver architecture can be adopted to various printing environment

Free from License Woe Vendor drivers can be provided without making source code open 51 6-10 July 2004 Free Standard Group: OpenPrinting

Various Configuration for Vector Printer Driver

(1) (2) (3)

ApplicationApplication GUI Call ApplicationApplication ApplicationApplication GUI Tool Kit Vector API GUI Tool Kit Metafile (PostScript, PDF, ...) Vector API Renderer PrinterPrinter Driver Driver Renderer Printer Driver PDL Printer Driver Vector API PrintPrint System. System. PDL PrinterPrinter Driver Driver PrintPrint System. System. -Static Link PDL Print System. -Dynami Link Print System. -IPC Wrapper PDL PDL

52 6-10 July 2004 Free Standard Group: OpenPrinting Current Status

Current Specification Version - Version 0.2 ftp://ftp.pwg.org/pub/pwg/fsg/vector/

opfc implementation based on v0.2 Project funded by IPA HP PCL5, Epson ESC/Page, Canon LIPS IV Support on Ghostscript and Xprint Easily ported to BSD platform https://sourceforge.jp/projects/opfc/

Current Activity Device Font & Font downloading support

To-Dos Generalize Job Property and Device Capability Parameter definition Small Memory Device Support (binary encoding of parameters) Multiple Job for Single Driver Dynamic APIEntry Architecture independent data types (Color Issue) (formalize IPC Protocol)

53 6-10 July 2004 Free Standard Group: OpenPrinting Ghostscript+Raster Printer Driver

CUPS Modules control/status data OpenPrinting Modules printing data Printer Specific Modules Postscript data stream BerkeleyBerkeley commands commands ApplicationApplication SystemSystem V V commands commands Ghostscript Parameter Printer Configuration IPP I/F Lib Printer Option Information CUPS API Lib. CUPS API Lib. PPDPPD files files

Scheduler Scheduler configconfig files files Operation environment settings

filters filter invoking drivers Postscript data stream filters

Ghostscript option parameters PDL stream (Raster) zSource code of printer GhostscriptGhostscript driver should be open. RasterRaster Printer Printer Driver Driver zRaster only: slow!

I/O manager (USB, Parallell, lpd, etc.) backendbackend

printerprinter 54 6-10 July 2004 Free Standard Group: OpenPrinting IPA Implementation (1): Ghostscript+Vector Printer Driver

CUPS Modules control/status data OpenPrinting Modules printing data Printer Specific Modules Postscript data stream BerkeleyBerkeley commands commands ApplicationApplication SystemSystem V V commands commands Ghostscript Parameter Printer Configuration IPP I/F Lib Printer Option Information CUPS API Lib. CUPS API Lib. PPDPPD files files

Scheduler Scheduler configconfig files files Operation environment settings filtersfilters filter invoking drivers Postscript data stream Ghostscript option parameters zDriver can be closed. It PDL stream Ghostscript can handles vector data Ghostscript with some overhead of PDL Data Stream glueglue code code glue code/IPC. Vector Printer Driver API PDL stream

VectorVector Printer Printer Driver Driver backendbackend I/O manager (USB, Parallell, lpd, etc.)

printerprinter 55 6-10 July 2004 Free Standard Group: OpenPrinting IPA Implementation (2): Xprint+Vector Printer Driver

CUPS Modules control/status data OpenPrinting Modules printing data ApplicationApplication Printer Specific Modules XX lib/Xp lib/Xp lib lib

X Protocol

X Print Server Berkeley commands X Print Server PDL Data Berkeley commands glueglue code code Stream Vector Printer Driver API PDL stream Vector Printer Driver Vector Printer Driver Parameter Printer Configuration IPP I/F Lib Printer Option Information CUPS API Lib. CUPS API Lib. PPDPPD files files

Scheduler Scheduler configconfig files files Operation environment settings filtersfilters filter invoking drivers

I/O manager (USB, Parallell, lpd, etc.) backendbackend

printerprinter 56 6-10 July 2004 Free Standard Group: OpenPrinting URLs

Specification V0.2: ftp://ftp.pwg.org/pub/pwg/fsg/vector/ V0.3pre (work in progress) http://omihara.hp.infoseek.co.jp/unixprint/vector/VectorPrinterDriver API-20040906.sxw

Implementation) https://sourceforge.jp/projects/opfc/

Official Drivers (sites in Japanese) http://cweb.canon.jp/drv-upd/lasershot/drv_linux.html http://www.epkowa.co.jp/linux/dl_OPFC.html

IPA Project http://www.epkowa3.on.arena.ne.jp/OpenPrintingProject/index_e .html

57 6-10 July 2004 Printer Driver

58 15-17 November 2004 Free Standard Group: OpenPrinting Printer Driver & Objectives

Printer Driver API is: A printer driver interface for requesting driver/printer information and accepting/printing print jobs. Vector API’s supporting PDL based printers Raster API’s supporting Raster based printers

Printer Driver API contains: Commands to query/set capabilities Commands to create and control print jobs Vector / Raster transfer commands

Objectives To be a common interface for printing to printers To isolate the application from the details of individual printers To isolate the application from the details of individual PDLs To have printer drivers support a set of common job properties Performance Optimization Achieve full speed printing Utilizes graphical acceleration feature supported by printer controllers

59 6-10 July 2004 Free Standard Group: OpenPrinting Printer Driver API

Job Control Open/Close driver Set Job/Document/Page attributes

Graphics State Operation Set attributes for each graphics objects

Drawing Operations Path Text Bitmap Image Scanline Raster Image

Stream Data (embedded PDL)

60 6-10 July 2004 Free Standard Group: OpenPrinting Printer Driver API – Details (1)

Printer Context Graphics State Object Operations OpenPrinter() Graphics State is managed as GS object Create printer context Operation to GS – InitGS, SaveGS, RestoreGS Register API entry pointers Controls to each items in GS Specify file descriptor for data stream CTM (Coordinate Translate Matrix) ClosePrinter() Color Space Closes printer context Raster Operation – ROP3 Driver releases all resources Fill Mode – even/odd or winding Alpha Constant Line Style – width, dash/solid, cap, join Paint Mode – opaque or transparent Job Control Stroke and fill color – brush control A print job consist of documents. Foreground and background color – solid brush A document consist of pages. StartJob(), EndJob() Path Operations StartDoc(), EndDoc() A path is a virtual track object StartPage(), EndPage() Will be visible by stroke or fill operations Job, doc and page attributes are Will be used to define clip region specified by each StartXxx() function. Lines, rectangles, polygons, arc/pie and bezier are all treated as “path.” Query Device Capabilities & Information Operations: QueryDeviceCapability() NewPath() – Declare start of a path Query if the device can do number-up, EndPath() – Declare end of a path duplex, etc. StrokePath(), FillPath(), StrokeFillPath() – make visible path Information such as media size, media SetClipPath(), ResetClipPath() – defines clip region by current source and etc. which are supported by path the device can be retrieved. QueryDeviceInfo() Query current settings of the device.

61 6-10 July 2004 Free Standard Group: OpenPrinting Printer Driver API – Details (2)

Text Operations Raster Image Operations Still under investigation… StartRaster(), TransferRasterData(), EndRaster() Current DrawBitmapText() will be Set to be extended by Raster Team removed. Text Operations will includes: Define and Query font metrics Stream Data Operations Device Font Utilization Font Downloading StartStream(), TransferStreamData(), EndStream()

Bitmap and Scanline Operations Bitmap is a bit oriented image data drawn in rectangle region DrawImage() StartDrawImage(), TransferDrawImage(), EndDrawImage() Scanline is a horizontal line defined by start and end point pairs. Used to draw graphics rendered by renderer StartScanLine(), ScanLine(), EndScanLine()

62 6-10 July 2004 Free Standard Group: OpenPrinting Linking

direct linking R: GPL RPC linking Printer driver is provided as a D: GPL R: any or D: any dynamic library. R: MIT Driver can be linked dynamically D: Closed or LGPL or via RPC. avoids license problem Render Render

glue code glue code data data API API

libxxx.so RPC library (printer driver) Protocol RPC

RPC server data API

libxxx.so (printer driver) 63 6-10 July 2004 Free Standard Group: OpenPrinting PDAPI Raster- Common Job Properties

Features Standardized name for common features Standardized keys and the values An extensible paradigm for non-standard features Coherence across the FSG OpenPrinting model

ColorInput PrintQuality ColorOutput Resolution Copies Rotation Margins ScalingType MediaBackCoating ScalingPercentage MediaColor SheetCollate MediaFrontCoating Sides MediaInputTrayName StitchingPosition MediaSizeName StitchingReferenceEdge MediaType StitchingType MediaUnprintableMargins StitchingCount NumberUp StitchingAngle NumberUpPresentationDirection Trimming OutputBinName 64 6-10 July 2004 Free Standard Group: OpenPrinting PD-Raster Issues / Concerns

Small number of contributors in this group Contributors from across the printing spectrum Integration of the vector API into this group Reconciliation with other standards Expansion into other printing areas - Device fonts Funding for people on this group

65 6-10 July 2004 Free Standard Group: OpenPrinting PD-Vector Working Group Information

To subscribe to FSG Vector Printer Driver mailing list: http://freestandards.org/mailman/listinfo/printing-japan

To post a message to FSG Vector Printer Driver mailing list [email protected]

To view FSG Vector Printer Driver mailing list archives http://freestandards.org/mailman/listinfo/printing-japan

To find FSG Vector Printer Driver documents ftp://ftp.pwg.org/pub/pwg/fsg/vector/

Participants Osamu Mihara (Fuji Xerox Printing Systems Co., Ltd)

66 6-10 July 2004 Free Standard Group: OpenPrinting PD-Raster Working Group Information

Weekly FSG Printer Driver conference calls Mondays at 2:00 PM US Eastern for 1-2 hours

To subscribe to FSG Printer Driver mailing list: http://freestandards.org/mailman/listinfo/printing-driver

To post a message to FSG Printer Driver mailing list [email protected]

To view FSG Printer Driver mailing list archives http://freestandards.org/mailman/listinfo/printing-driver

To find FSG Printer Driver documents ftp://ftp.pwg.org/pub/pwg/fsg/driver/

Participants Mark Hamzy (IBM) – chair Till Kamppeter (MandrakeSoft) Glen Petrie (Epson)

67 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting Thanks from the Printer Driver Team

68 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting Thanks from the Status Monitoring Team

69 6-10 July 2004 PCM Study & Status Monitoring Interface TORATANI Yasumasa [email protected] OpenPrinting WG Japan/Asia Canon Inc. 15-17 November 2004

70 15-17 November 2004 Free Standard Group: OpenPrinting Agenda

PCM Plug-in Interface Backgrounds Requirements API Design

Status Monitoring Interface Just an idea

Issues/Concerns, Next and Info.

71 6-10 July 2004 PCM Plug-in Interface

72 15-17 November 2004 Free Standard Group: OpenPrinting Backgrounds

PCM provides the multi-channel interface for; Writing a printing data to the printer. Reading a printer status data from the printer.

Writing Reading Status Reading Status Printing Data for User “A” for User “B”

PCM

Reading / Writing Dataflow Control

control

Printer

73 6-10 July 2004 Free Standard Group: OpenPrinting Backgrounds (Cont.)

Needs to control the multi-channel data flow. Who controls? Each printer/protocol has its own commands and procedures. Who deals with the printer/protocol dependencies?

PCM Should be separated into two layers; Core module providing the multi-channel functionalities. Plug-in providing each printer/protocol dependent functionalities.

74 6-10 July 2004 Free Standard Group: OpenPrinting Two Layers Arch.

Writing Reading Status Reading Status Reading / Writing Control Process Printing Data for User “A” for User “B” ‹ Forked by PCM for each printer. ‹ Manages the dataflow due to; PCM ¾ Data writing request by PCM. ¾ Data reading request by PCM. fork ¾ Data writing ready from Plug-in. Reading / Writing Control Process ¾ Data reading ready from Plug-in.

control printer / protocol Plug-in for each Printer / Protocol fork or link independent layer ‹ Manages the printer / protocol dependent; printer / protocol Plug-in for dependent layer ¾ Packet control. each Printer / Protocol ¾ Timing Control for reading / writing. ¾ Data translation. Printer / Network

75 6-10 July 2004 Free Standard Group: OpenPrinting Two Layers Arch. by threads

Writing Reading Status Reading Status Reading / Writing Control Process Printing Data for User “A” for User “B” Writing Thread ‹ Manages the dataflow due to; PCM ¾ Data writing request by PCM. fork ¾ Data writing ready from Plug-in. Reading / Writing Reading Thread Control Process ‹ Manages the dataflow due to; Writing Thread Reading Thread ¾ Data reading request by PCM. control ¾ Status reading ready from Plug-in. printer / protocol fork or link independent layer printer / protocol Plug-in for each Printer / Protocol dependent layer Plug-in for each ‹ Manages the printer / protocol Printer / Protocol dependent; Writing Reading Thread control Thread ¾ Packet control. ¾ Timing Control for reading / writing. ¾ Data translation. Printer

76 6-10 July 2004 Requirements for Plug-in

77 15-17 November 2004 Free Standard Group: OpenPrinting Basic Requirements

Plug-in must; A-1) Provide the API for; Writing a printing data to the printer. Reading a printer status data from the printer.

A-2) Conceal the printer/protocol dependencies. PCM can deal with all the printers/protocols (e.g. IPP, etc..) as an unified object via each Plug-in.

A-3) Provide the API that can be applied on both; Big memory system. Small memory system.

78 6-10 July 2004 Free Standard Group: OpenPrinting Port Control Requirements

Plug-in must; B-1) Conceal the port control procedures based on each printer/network protocol dependencies. Open / Close a USB port, etc... Open / Close an IPP port etc... Port must; B-2) Be specified by the generic device/network protocol identifier. URI ?

79 6-10 July 2004 Free Standard Group: OpenPrinting Data Reading Requirements Plug-in must; C-1) Provide a generic API for sending back the variable length printer status. Printer status data length depends on each printer model and conditions of the printer. Plug-in may separate a single very long printer status data into a set of several short data for sending them back into a short restricted buffer prepared by the upper layer.

C-2) Provide the API to know the top of the printer status data and/or to reset the reading position of it. The upper layer doesn’t know what the status data includes(binary, XML, etc…), but needs to know the top of it. Reading a printer status data may be interrupted by a signal.

80 6-10 July 2004 Free Standard Group: OpenPrinting Data Reading Requirements (Cont.)

Plug-in must; C-3) Keep the printer status data consistent until all the status data are read by the upper layer. Plug-in needs a trigger to allow for reading a printer status from the printer/network port. C-4) Provide the API which gives a trigger to the Plug-in for dealing with reading a printer status data and writing a printing data exclusively. Some printers/protocols have to deal with reading a printer status data and writing a printing data exclusively, and the Plug-in needs a trigger for doing it.

81 6-10 July 2004 Free Standard Group: OpenPrinting Data Writing Requirements

Plug-in must; D-1) Provide the API which gives a trigger to the Plug-in for dealing with reading the printer status data and writing the printing data exclusively. Same as C-4) of the Data Reading Requirements. Writing a printing data may be interrupted by a signal.

82 6-10 July 2004 Free Standard Group: OpenPrinting Dataflow Control Requirements

Plug-in must; E-1) Let the upper layer know; If the Plug-in is ready to receive a printing data. If the Plug-in is ready to send back a printer status data.

Plug-in should; E-2) Provide the API being not affected by OS platform dependencies.

83 6-10 July 2004 Free Standard Group: OpenPrinting Printer Control Requirements Plug-in must; F-1) Provide the API to cancel a printing. The upper layer keeps alive the Plug-in for obtaining the printer status continuously across several printing jobs. Each printing job’s printing data might be specified by an identifier for the cancellation. (TBD) Example) In case of the upper layer sends two job’s printing data to the Plug-in. After the upper layer finished to send the first job’s printing data to the Plug-in, the upper layer can start to send the second job’s printing data while the Plug-in may send the first job’s printing data to the port. During this period, the first job has not been finished, and if the user wants to cancel the second job after noticed the mistake, the upper layer needs an identifier to cancel the second job’s data buffering, or cancel the first job.

Upper Cancel Plug-in Printer Layer Write Write 2nd Job’s Printing Data 1st Job’s Printing Data

84 6-10 July 2004 Free Standard Group: OpenPrinting Printer Control Requirements (Cont.)

Plug-in might (TBD); F-2) Provide the API for the common control functions. “Pause”, “Resume” for local port printers as well as IPP ? IPP needs a job identifier to control a job.

F-3) Provide the API for tracking printing jobs. Plug-in for IPP will be provided, while IPP provides job attributes. If PCM is the “only” interface to access a printer, PCM might provide the interface for tracking printing jobs in a printer to satisfy some applications needs.

85 6-10 July 2004 Plug-in API Design

86 15-17 November 2004 Free Standard Group: OpenPrinting Object / Port Control

Object Control New z Conceal the printer/protocol dependencies in the created object. z Object keeps the URI specified by the upper layer until destroyed.

Destroy z Destroy the object.

Port Control Open z Open the printer / network port specified by the object.

Close z Close the port / network port specified by the object.

87 6-10 July 2004 Free Standard Group: OpenPrinting Data Reading

StartRead z Declare the start of reading a printer status. z Reset the reading position of the printer status data in the object.

Read z Read the specified byte length of a printer status data from the object, and store them in the buffer given by the upper layer. z Returns the status data byte length read from the object, or zero when no status data remains in the object.

* The data format of the printer status is out of scope of this API.

EndRead z Declare the end of reading a printer status.

88 6-10 July 2004 Free Standard Group: OpenPrinting Data Writing

StartWrite z Declare the start of writing a printing data.

Write z Write the specified byte length of a printing data in the buffer given by the upper layer to the object. z Returns the printing data byte length written to the object, or zero when no printing data written to the object.

EndWrite z Declare the end of writing a printing data.

89 6-10 July 2004 Free Standard Group: OpenPrinting Dataflow Control

GetReadFD z Obtain the reading file descriptor for select() use. z The upper layer know by select() if the Plug-in is ready to send back a printer status data.

GetWriteFD z Obtain the writing file descriptor for select() use. z The upper layer know by select() if the Plug-in is ready to receive a printing data.

Reading / Writing Control Process The upper layer deals with control all the reading/writing request by select(). Plug-in for each Printer / Protocol

90 6-10 July 2004 Free Standard Group: OpenPrinting Printer Control

StartJobData z Declare the beginning of the printing data of each job to the object.

CancelJobData z Cancel the printing data specified by the job identifier.

EndJobData z Declare the end of the printing data to the object.

ExtCtrl z Execute the extended printer control, such as “Pause”, “Resume”...

91 6-10 July 2004 Status Monitoring

92 15-17 November 2004 Free Standard Group: OpenPrinting Just an Idea

Requirements Status Monitoring Interface must; Translate the printer status data read from each Plug- in into the generic format data that does not depend on each printer/protocol.

Generic format is XML? IPP? other?

93 6-10 July 2004 Free Standard Group: OpenPrinting Just an Idea (Cont.)

API Design New z Conceal the printer/protocol dependencies in the created object. z Object keeps the “language” and “character encoding” specified by the caller (module which calls this API) until destroyed. StartTranslate, Translate, EndTranslate z Translate the printer status data given by the caller to the generic format data, and store it into the buffer given by the caller. Destroy z Destroy the object.

94 6-10 July 2004 Issues/Concerns, Next and Info.

95 15-17 November 2004 Free Standard Group: OpenPrinting Issues/Concerns, Next

Plug-in Interface Need to collect the requirements for handling events.

Status Monitoring Interface Need to collect the requirements for the Status Monitoring functionalities.

Next Define the draft Plug-in API. Define the draft Status Monitoring API.

96 6-10 July 2004 Free Standard Group: OpenPrinting Info.

Contributors TORATANI Yasumasa Canon Inc. Osamu MIHARA FUJI XEROX Printing Systems Co. Ltd. Ide Kentaro SEIKO EPSON CORPORATION Nomura Kazuo EPSON SOFTWARE DEVELOPMENT LABORATORY, INC. KANJO Hidenori BBR INC. YOSHIDA Mikio BBR INC. Shinpei KITAYAMA EPSON KOWA CORPORATION YAMAGISHI Toshihiro Turbolinux, Inc. Hisao NAKAMURA E&D Koji OTANI AXE

97 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting

The End Thanks from the FSG / OpenPrinting Working Groups

98 6-10 July 2004 Print Channel Monitor

99 15-17 November 2004 Free Standard Group: OpenPrinting Print Channel Monitor Objective

Print Channel Monitor (PCM) will wrap the difference of physical layer Upper layer do not need to care about the difference of physical layer like USB, Parallel, Ethernet. Wrap the difference of transaction protocol used by printer venders.

PCM will focus on communication layer Job control and device management are left to upper layer.

100 6-10 July 2004 Free Standard Group: OpenPrinting PCM outline

Application JTAPI

Command/Control Print manager Data

Call Back’s

Spooler External or Signal Print data Renderer Transform

Printer PnP SM Driver Capability

PCM

USB Printer

101 6-10 July 2004 Free Standard Group: OpenPrinting PCM outline

SM Capability Driver

Status port Data port PCM

Protocol convert modules Physical dev: USB P hysical dev: 1248 Physical dev: Ether

ulpt lpt lpr/cups

102 6-10 July 2004 Free Standard Group: OpenPrinting Status

Draft – working now! 2004/5/31 Pre-draft of the PCM specifications. (written only the main point.) 6/ F Open to working group. 6/ F Start discussion and writing the draft.

Discussion about PCM Printing-Japan ML Face to Face meeting – Monthly

Milestone 2004/8/27 Create a model/architecture 2005/1/30 Release 1.0 specification

To-Do Consider the other existing Printing Systems so PCM could be easily adopted Consider the future extension Support new I/F or new device like MFP 103 6-10 July 2004 Free Standard Group: OpenPrinting PCM Working Group Information

To subscribe to FSG PCM mailing list: http://freestandards.org/mailman/listinfo/printing-japan

To post a message to FSG PCM mailing list [email protected]

To view FSG PCM mailing list archives http://freestandards.org/mailman/listinfo/printing-japan

To find FSG PCM documents To be determined

Participants Kentaro Ide (Seiko Epson Corp) Shinpei Kitayama (Epson Kowa Corp.) Fumio Nagasaka (Seiko Epson Corp.) Kazuo Nomura (Seiko Epson Corp.) Koji Otani (AXE Inc)

104 6-10 July 2004 Free Standard Group: OpenPrinting FSG OpenPrinting Thanks from the Print Channel Monitoring

105 6-10 July 2004 Team