ADC Membership Technical Business Join ADC
Search Advanced Search
Technical Note TN1166
LaserWriter 8.6.5 Job Log Format


LaserWriter 8.6.5 provides the option of creating a job log that contains a description of the job's settings, including a summary of the fonts used in the job. This Technote describes the job log format for individuals who wish to use the job log to solve various prepress printing issues.

 Updated: [May 10 1999]

Job Log Syntax

At the top level, the job log defines a dictionary of arrays. Each entry in a dictionary is indexed by a key string. The data for an entry is an array of values, with each value being either a dictionary, a string, a number, a boolean, or a null value.

To define the job log dictionary, the job log uses a series of ordered statements to be read in order from the start to the end of the file. Each line is either an assignment, adding a value to the current dictionary, or a command. Current commands used to mark the extent of dictionaries by LaserWriter 8 are Begin and End. Future releases of the LaserWriter 8 driver may add new commands.

The job log is made up of a series of lines in which each line can be terminated by a carriage return, a line feed, or both. LaserWriter 8.6.5 currently terminates each line with a carriage return, but this behavior may change in future LaserWriter releases. Job Log readers should be prepared to interpret both a carriage return and a line feed, or both.

White space, defined to be spaces or tab characters, and the character ':' delimit tokens. Comments can be placed on a line using "//". The "//" and all of the characters to the end of the line are considered to be the comment. The comments provide information to a human job log reader.

The Job Log Syntax:

lines -> lines line
lines -> line
line -> command
line -> assignment
command -> WORD WORD
assignment -> WORD : value
value -> STRING | NUMBER | boolean | NULL
boolean -> TRUE | FALSE

TRUE -> "true"
FALSE -> "false"

Currently Defined Dictionaries and Keys for LaserWriter 8.6.5

Top Level Dictionary:

LogCreated String When the log was created.
GeneralInfo Dictionary Information about the user, application, and driver that created the job.
PrinterConfiguration Dictionary Information about the printer targeted for the job.
JobInfo Dictionary Information about the print job's parameters.
FontLog Dictionary Information about the fonts used in the document.

GeneralInfo Dictionary:

DocumentTitle String The title of the document that was printed.
User String The user who printed the document.
Application String The application string from low memory; uses LMGetCurApName()
PostScriptApplication Boolean "false" means the application generated only QuickDraw.
"True" means the application generated some PostScript directly.
BadApp Number A bit map describing the driver's special handling for the printing application.
DriverName String
DriverVersion String

Back to top

Job Log Reader

Prepress houses may want to create a job log reader to parse for information relevant to their business.

A job log reader should maintain a stack of dictionaries. The dictionary stack's top dictionary is the current dictionary, and assignment statements add values to the current dictionary. A job log reader should define an empty dictionary and place it on the dictionary stack before reading the first line from the job log. The Begin command instructs the job log reader to create a new, empty dictionary. This new dictionary is added to the current dictionary using the key that is part of the Begin command. Once the new dictionary has been added to the current dictionary, the new dictionary is pushed on top of the dictionary stack to make it the current dictionary. Subsequent assignment statements add values into this new dictionary. The End command marks the end of a dictionary. Upon reading the End command, the job log reader should pop the dictionary off of the dictionary stack.

When an assignment line is read, it contains a key and a value. The job log reader must look up the key in the current dictionary. If the key exists in the dictionary, the reader should obtain the array associated with the key. The reader should then extend the array by adding the value from the assignment log to the end of the array. If the key is not found in the dictionary, the reader needs to create a one-element array containing the assignment value and add the new array, indexed by the key, to the dictionary.

Back to top


As you can see, the job log is a useful new feature added to the LaserWriter 8.6.5 driver.


Apple's Technote web site

Technote 1165: Introducing the LaserWriter 8 Driver version 8.6.5

Back to top



Acrobat version of this Note (52K).


Back to top

Technical Notes by Date | Number | Technology | Title
Developer Documentation | Technical Q&As | Development Kits | Sample Code

Gray line

Contact ADC |  ADC Site Map |  ADC Advanced Search
For information about Apple Products, please visit
Contact Apple | Privacy Notice
Copyright © 2002 Apple Computer, Inc. All rights reserved.