XNSPRINTINGUI CEDAR 10.0 FOR INTERNAL XEROX USE ONLY XNSPrintingUI Commands for using an XNS Print Service Bill Jackson c Copyright 1986, 1987, 1991 Xerox Corporation. All rights reserved. Abstract: XNSPrintingUI supplies a user interface and a client interface to procedures exported by the Printing Courier Program which is available on product printer servers (8044's, 8045's, 4050's) and on the Cedar Interpress print server. The Commander Operations of SendIPMaster, GetPrintStatus, GetPrintProperties, and XNSPrintRequestWatcher are supported. I've added the manipulative interface XNSPrintRequestWatcher which allows one to check on the progress of a print request; it's just a little too hard for users to type a multi word Opaque data type at the commander, and I'd rather not invent a heuristic (since my creativity is pretty drained right now). Created by: Bill Jackson (with credits to Jules Bloomenthal) Maintained by: Bill Jackson Keywords: Courier, fonts, Interpress, network tools, printing, Sirocco, Tioga documents, XNS XEROX Xerox Corporation Palo Alto Research Center 3333 Coyote Hill Road Palo Alto, California 94304 For Internal Xerox Use Only 1. Context Scope of the package XNSPrintingUI is a transport mechanism which will deliver a document to a printer. Appearance of the finished product is totally dependent upon the actions of the printer with respect to the instructions supplied in the Interpress master. This document touches on some other topics, such as where printers are and example of creating Interpress masters, but for a more complete description the "truth" lies elsewhere. Hopefully there is enough here to get started, or to stimulate your memory. 2. UserProfile Recommendations The user profile entries Hardcopy.InterpressPrinter, Hardcopy.TwoSided, and Hardcopy.PigeonHole are recommended. In particular, it is quite helpful to define your standard Interpress printer, as all commands take advantage of the default value of this option. Most of the other values have been included for completeness, but it is clearly much easier to use command line options to alter their values for particular print requests. CommandTool.NewUser (or BootCommands) Alias QPrint (File) TiogaToInterpress File.IP$ _ File; SendIPMaster -h Snoball File.IP$; Delete File.IP$ CommandTool.PerLogin CreateButton Print Print $FileNameSelection$ HardCopy options BANNER: ROPE ~ "Hardcopy.Banner"; -- "" COPYCOUNT: ROPE ~ "Hardcopy.CopyCount"; -- 1 FAX: ROPE ~ "Hardcopy.FaxPhoneNumber"; -- "" IPPRINTER: ROPE ~ "Hardcopy.InterpressPrinter"; -- "Huh? -- no printer!" KEY: ROPE ~ "Hardcopy.Key"; -- 0 MEDIUM: ROPE ~ "Hardcopy.Medium"; -- "usLetter" PIGEONHOLE: ROPE ~ "Hardcopy.PigeonHole"; -- senderName PAGEFIRST: ROPE ~ "Hardcopy.PageFirst"; -- 1 PAGELAST: ROPE ~ "Hardcopy.PageLast"; -- 177777B (max) PRIORITY: ROPE ~ "Hardcopy.Priority"; -- "normal" STAPLED: ROPE ~ "Hardcopy.Stapled"; -- FALSE TWOSIDED: ROPE ~ "Hardcopy.TwoSided"; -- TRUE AUTOOPEN: ROPE ~ "HardcopyWatcher.AutoOpen";-- FALSE Be sure to quote the name of the printer option on Hardcopy.InterpressPrinter entry. The two "BOOLEAN" options, Hardcopy.Stapled and Hardcopy.TwoSided, deserve some special explanation. It is possible to use instructions inside the Interpress master that will specify these things, but if a TRUE or FALSE value is passed over the protocol, that takes precedence over the master's instructions. This can be awkward, especially because it is possible to say certain things (such as tumbleDuplex) in the master that cannot be expressed in the protocol. To allow for this possibility, you can say Hardcopy.TwoSided: Default Hardcopy.Stapled: Default in your profile to omit these things from the protocol altogether, leaving it to the printer and the master's instructions to specify them. If you have the Hardcopy.TwoSided option set to TRUE or FALSE, and you want to override this on the command line of SendIPMaster, you may alternatively use the "-0" switch. 3. Introduction to Printing on product servers Printer types and locations N. B. This information is quite dated; do not depend on it to be very accurate. Perfector [Perfector:Parc:Xerox] is a RoadRunner printer at PARC, located in the pod 3 maze. Perfector prints Interpress 3.1 (and other PDLs) on a 4090 print engine, which is a duplex printer (prints two-sided pages) that prints at up to 90 pages per minute. Snoball [Snoball:Parc:Xerox] is a RoadRunner printer at PARC, located in the pod 3 maze. Snoball prints Interpress 3.1 (and other PDLs) on a 4850 print engine, which is a duplex (prints two-sided pages), highlight color printer, with a stapler, that prints at up to 50 pages per minute. Cedar Print Servers PARC has installed several Interpress 3.0 Professional Graphics Set print servers based on the Cedar Imager and Interpress implementations. These printers will print any Interpress master generated by Cedar, ViewPoint, XDE or Interpress ToolKit applications (subject to resource limitations on the Dandelion processor, mainly virtual memory limits). Here is a list of printers near CSL. Service Name Location [TimsPrinter:Parc:Xerox] Bld 35 # Tim's annex -- an experimental system 8044's & 8045's 804x's were the most prevalent Interpress printers around PARC. You can find them listed under NS PRINTERS in [Indigo]ParcPhoneList.txt; here are a few near CSL: Service Name Location [Scripto:Parc:Xerox] Bld 35 # 2106 -- with Clover/Quoth [Papermate:Parc:Xerox] Bld 35 # 3307 -- with Wonder Some of these have Raven (2700) print engines attached and others have Banhsee (4045) engines. This should make no difference other than speed/paper capacity/blackness. The key is what version of software is on the server. Also, there are fonts to be found just about anywhere, but there is a set of "Required Fonts" that you can normally expect to find. The software folks have the complete rundown of what is in the "Required Fonts" set, and what extra fonts have been installed on each printer. Interpress Master Creation Tioga documents Well, there's a lot more about creating Interpress masters than I can hope to cover here, but here's a simple example. For more information look at TiogaImagerDoc.tioga, or contact the folks in the Imaging Group. (Caution: InterpressToCompressedIP takes a while even on a Dorado and consumes substantial disk space.) % TiogaToInterpress XNSPrintingUIDoc.tioga Reading []<>Users>Beach.pa>7.0>XNSPrintingUI>XNSPrintingUIDoc.tioga!2 . . . [1] [2] [3] [4] [5] [6] [7] []<>Users>Beach.pa>7.0>XNSPrintingUI>XNSPrintingUIDoc.interpress!2 written. % InterpressToCompressedIP XNSPrintingUIDoc-4050.interpress _ XNSPrintingUIDoc.interpress Reading []<>Users>Beach.pa>7.0>XNSPrintingUI>XNSPrintingUIDoc.interpress!2 . . . [1] [2] [3] [4] [5] [6] [7] []<>Users>Beach.pa>7.0>XNSPrintingUI>XNSPrintingUIDoc-4050.interpress!1 written. % SendIPMaster -h Zipper XNSPrintingUIDoc-4050.interpress Sending [ShangriLa]Users>Beach.pa>7.0>XNSPrintingUI>XNSPrintingUIDoc-4050.interpress to Zipper Service: [Warning Appearance Errors:PARC:xerox] RequestID: [39722, 52311, 0, 43571, 1428] Slides Slides are a little unique, as you want to start with the specialized form in order to have available to you some of the characters which are only available on the Interpress printers (press has a smaller character set). % Form BitsOnPaper.tioga _ AnacapaSlides % TiogaToInterpress BitsOnPaper.tioga Reading []<>Temp>BitsOnPaper.tioga!6 . . . [1] [2] [3] []<>Temp>BitsOnPaper.interpress!9 written. % SendIPMaster -h Perfector BitsOnPaper.interpress Sending [Oriskany]Temp>BitsOnPaper.interpress to Perfector Service: [Perfector:Parc:Xerox] RequestID: [0, 43520, 29765, 5478, 9077] 4. Introduction to the User Interface for XNS Printing Commander operations SendIPMaster A quick synopsis: SendIPMaster transmits an Interpress master to a print service (a piece of software). In actuality, nothing checks to see if the contents of the file is an actual master, so this is actually a slight deception. Furthermore, SendIPMaster knows nothing about Interpress, nothing about the imaging software on the print service side, nor what the intended appearance of the "file" actually is. The job of SendIPMaster is simply to deliver (reliably) the contents of the file in question to the printer. In order to understand what the printer is going to do with this master, you need to look at the print service documentation. It would be wonderful if everything simply printing Interpress 3.0! % ? SendIPMaster SendIPMaster [-0 -1 -2 -a -b -s -c -h -f -l -m -medium ] Transmit a master to an XNS based printer. Switches: -0 leave plex unspecified -1 print one-sided -2 print two-sided -a correct color (Lamming-Rhodes; includes -b) -b balance grays -s staple output -c print multiple copies -f -h print on that service -l -m include parameter (possibly quoted) in printer message field -medium paper size, e.g., -medium usLetter or -medium ([width~229, length~279]) % SendIPMaster -h Perfector -medium usLetter Log.ip Sending Log.ip to Perfector Service: [Perfector:PARC:Xerox] RequestID: [8564, 147, 0, 956, 21760] The specification of -medium is really a string, and so gets a little weird for things not in the standard list of names. Examples using two Commander quoting conventions are -medium ([width~279, length~432]) -medium "[width~279, length~432]" but -medium ([width~279, length~432]) will not work because of the extra space. Strange, but true. The sizes are millimeters, so this is example selects 11 by 17 inch paper. Use GetPrintProperties (see below) to find out the legal choices for your printer. FaxIPMaster A quick synopsis: FaxIPMaster transmits an Interpress master to a print service (a piece of software) identically to the way SendIPMaster does, but the "message" field of the protocol is filled in with an encoding of the destination phone number of the remote Fax machine, so when the document is "printed" it is actually sent over telephone lines to a fax machine somewhere out there in the *real* world. Some notes on acceptable formats of phone numbers are in order here, but for now, the software is stupid. Suffice it to say, strings of digits work, assume anything else doesn't. % ? FaxIPMaster FaxIPMaster [-t -c -h -0 -1 -2 -f -l ] Send a master through an XNS based server to a remote FAX machine. Switches: -t FAX phone number -c print multiple copies -h print thru service -0 leave plex unspecified -1 print one-sided -2 print two-sided -f -l % FaxIPMaster -h "Universal FAX:Osbu North" -t "9(415)4944241" Log.ip Sending [Oriskany]Users>BJackson.pa>7.0>Printing>Log.ip to Universal FAX:Osbu North Service: [Universal Fax:OSBU North:Xerox] RequestID: [0, 43520, 9404, 27290, 9092] GetPrintStatus A quick synopsis: GetPrintStatus queries the print service to determine the present state. There are 4 interesting aspects: spooler, formatter, printer, and media. Spooler status explains the current state of the ability of ther print service to accept print requests, formatter status explains the current state of the Interpress master decomposition software, printer status explains the current state of the marking engine, and media status explains the currently available materials upon which masters can be rendered. % ? GetPrintStatus GetPrintStatus {Printer}* Find out the status of an XNS based printer. {implementor: ^GetPrintStatusImpl.GetPrintStatusProc} % GetPrintStatus Quill Service: [Quill:PARC:Xerox] Spooler: available, Formatter: available, Printer: available Media: [ [Medium(paper): Paper(knownSize): usLetter], [Medium(paper): Paper(knownSize): usLegal] ] GetPrintProperties A quick synopsis: GetPrintProperties queries the print service to determine the present abilites of the printer. There are 3 interesting properties: media, staple, and twoSided. Media properties describe the currently available materials upon which masters can be rendered, staple & twoSided describe the availablity of the stapling and duplex printing services. % ? GetPrintProperties GetPrintProperties {Printer}* Find out the properties of an XNS based printer. % GetPrintProperties Perfector Service: [Perfector:PARC:Xerox] Staple: FALSE, TwoSided: TRUE Media: [ [usLetter] ] % GetPrintProperties IPPaper Service: [InternationalPulpAndPaper:PARC:Xerox] Staple: TRUE, TwoSided: TRUE Media: [ [[width~230, length~279]], [[width~279, length~432]], [usLegal], [usLetter] ] % XNSPrintRequestWatcher A quick synopsis: XNSPrintRequestWatcher provides the ability to create/open a manipulative interface for dealing with active print requests (documents previously transmitted to print services). More below... % ? XNSPrintRequestWatcher XNSPrintRequestWatcher Create viewer to monitor and/or manipulate XNS print requests {implementor: ^XNSPrintRequestWatcher.RequestWatcherCmd} % XNSPrintRequestWatcher % (either creates a viewer or opens an existing viewer) XNSPrintRequestWatcher Button poking A quick synopsis: Currently, there are some bugs, and the functionality should be inhanced, but poking on the button which corresponds to a print request will query the service and display the print requests' current state. Buttons currently include ; the interesting part of a request id is the 4th word 4 which seems to be a sequentially assigned value on Services 10.0 printers. Display is via a typescript which gets logged on the file ///Temp/XNSPrintRequestWatcher.TypeScript poke a button => a log entry Beginning of Typescript... Checking: [Oriskany]Users>BJackson.pa>PrintUI>Log.ip RequestStatus: [ (0) JobStatus(status): completed (1) JobStatus(statusMessage): ""] N XNSPrintingUIDoc.tioga Copyright 1986, 1987, 1989, 1991, 1993 by Xerox Corporation. All rights reserved. Bill Jackson (bj) February 24, 1987 8:12:37 pm PST Tim Diebert: February 6, 1987 4:44:45 pm PST Rick Beach, November 28, 1987 1:34:42 pm PST gbb February 15, 1989 6:23:09 pm PST Michael Plass, June 2, 1993 3:48 pm PDT NewlineDelimiter (cedardoc) styleMark LastEditedIcode LastEdited eITK LastEdited2K LastEdited,K LastEdited,K LastEdited$K LastEdited'J LastEditedIunleaded centerHeaders L centerFooter sy)Ititle Isubtitle'Iauthors IabstractmsDEPb P 1