Technote 1166

LaserWriter 8.6.5 Job Log Format

By Ingrid Kelly
Apple Worldwide Developer Technical Support

CONTENTS

Job Log Syntax

Job Log Reader

Summary

Downloadables

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.

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

terminals:
WORD:
STRING:
NUMBER:
NULL
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

Summary

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


Further References


Back to top

Downloadables

Acrobat version of this Note (49K).


Back to top

Acknowledgments

Thanks to Thanks to Rich Blanchard and John Blanchard.


Change History

Based upon an engineering specification by Rich Blanchard and John Blanchard.



To contact us, please use the Contact Us page.

Updated: 10-May-99


Technotes | Contents
Previous Technote | Next Technote