ADC Membership Technical Business Join ADC
Search Advanced Search
Technical Note TN1115
LaserWriter 8.5.1: The Extended 'PAPA' Resource

CONTENTS

Starting with LaserWriter 8.5.1, in order to support different types of desktop printers, the 'PAPA' -8192 resource has been extended from 103 to 1024 bytes long. This Technote discusses the additional bytes and in what way the LaserWriter 8.5.1 driver uses them.


Note:
If your code relies on the size of the 'PAPA' resource, it may crash with LaserWriter 8.5.1 unless you update it to support the extended 'PAPA' resource.

 Updated: [Feb 06 1998]






The 'PAPA' Resource


The new 'PAPA' looks just like an old style 'PAPA' at the front of the resource; that is, the 'PAPA' resource begins with three packed Pascal strings representing the printer name, the network type (usually LaserWriter), and the printer's zone. After these strings comes the 4-byte network address.

The new extended 'PAPA' then adds desktop printer (DTP) data beginning at the 104th byte in the resource. The data from bytes 104 to 1024 (1-based indices) is a series of tagged blocks where each block contains a 4-byte tag, followed by a 2-byte length value, and then the actual data. A series of these tagged blocks can reside in bytes 104 to 1024.


Back to top

Tag Requirements

There are a few requirements for the tagged blocks that go into the extended 'PAPA'. They are:

  • The only required block in an extended 'PAPA' is the 'TAGS' tag which gives the number of valid tag blocks in the extended resource. The 'TAGS' block must be the first tag in the extended record and serves as a validity check.

  • When the extended portion of the 'PAPA' contains multiple tag blocks, each block is required to start on a word (16-bit) boundary. Thus, if a tag block has an odd length, there should be a byte of padding before the start of the next tag block.

  • In order to limit the number of clients that need to understand the extended 'PAPA' format, and to make it easier to change the format in the future, the SettingsLib provides routines for creating and accessing the extended 'PAPA'. Relying on the extended 'PAPA' format rather than using SettingsLib is a bad idea. For more information on SettingsLib, please see Apple's Technote web site.

Tag Types

Tag: 'TAGS'

Value Size: sizeof(UInt16), 2 bytes

The value of the 'TAGS' block provides the number of valid tag blocks in the extended print record including itself. The 'TAGS' block must be the first tag in the extended print record; a valid extended print record must therefore begin with the byte sequence: 0x5441 0x4753 0x0002.

Tag: 'TYPE'

This tag is optional as its contents are redundant given the PAPA zone name string. If this tag does exists, then its value must match, not literally but in meaning, the DTP type implied by the zone string. Here are the zone string mappings to 'TYPE' values:

Zone Name String

'Type' tag value

Definition

=Hld

'=Hld'

- Creates and holds spool files. The spool files are never processed and the DTP is not connected to a real printer.

=Fil*

'=Fil'

- Creates PostScript or EPS files, is not connected to a real printer.

=Cst*

'=Cst'

- Creates a PostScript file and then launches an application to post-process the file.

=LPR*

'=LPR'

- Sends a PostScript job using the LPR protocol.

=Ird*

'=Ird'

- Sends a PostScript job over an irda, infrared, channel.

Valid Zone string

'PAP'

- Uses the AppleTalk PAP protocol to print the job.

In the preceding mapping, the '*' in the zone name string is a wildcard which can be replaced by zero or more characters of any value. The DTP Utility uses this part of the zone name string to differentiate between DTP printers of the same type with the same name located in different folders.

Beside the tag values '=Hld', '=Fil', '=Cst', '=LPR', '=Ird', and 'PAP', other tag values may be added in the future for new DTP types.

Tag: 'TCP'

Value Size: variable size string

If the DTP printer type requires a TCP/IP network address, it is placed in the extended PAPA using the 'TCP' tag. The value of the tag block is the network address of the printer either as a fully qualified network address, such as colorlaser.apple.com, or in dot format, such as 204.188.109.151.

This tag is required for DTP printers of type '=LPR'.

The length of the string is determined from the block length.

Tag: 'Q '

Value Size: variable size string.

If a DTP can use a print queue name, as can LPR DTPs, then the print queue name is placed in a tag value block of type 'Q '.

The length of the string is determined from the block length.

Summary of DTP type, zone names, and tags.

DTP Type

PAPA Zone String

Extended Data Tags

PAP

Actual Zone Name

'TYPE' is 'PAP '

Hold

~

'TYPE' is '=Hld/CODE'

Save to File

=Fil*

'TYPE' is '=Fil'

LPR

=LPR*

'TYPE' is '=LPR'

 

 

'TCP ' is printer's net address

 

 

'Q ' is optional and is the name of the print spooler.

InfraRed

=Ird

'TYPE' is '=Ird'


Back to top

Summary

This has documented the changes in the 'PAPA' resource in LaserWriter 8.5.1. Please beware if your application depends on the size of the 'PAPA' as it may no longer work with LaserWriter 8.5.1.


Back to top

References

Apple's Technote web site


Back to top


Downloadables

Acrobat

Acrobat version of this Note (60K).

Download




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 Apple.com.
Contact Apple | Privacy Notice
Copyright © 2002 Apple Computer, Inc. All rights reserved.
1-800-MY-APPLE