2.2.3.7 EMRI_PS_JOB_DATA Record

The EMRI_PS_JOB_DATA record stores encapsulated PostScript (EPS) data at the document level. If this record is present, it MUST appear immediately after an EMFSPOOL Header Record (section 2.2.2), as shown in the Record Syntax (section 2.2.1).


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

ulID

cjSize

PostScriptDataRecords (variable)

...

...

ulID (4 bytes): A 32-bit unsigned integer that identifies the type of record. The value MUST be 0x00000014, from the RecordType Enumeration (section 2.1.1).

cjSize (4 bytes): A 32-bit unsigned integer that specifies the size, in bytes, of the data attached to the record. Each record in EMFSPOOL format MUST be aligned to a multiple of 4 bytes.

PostScriptDataRecords (variable): Data after the ulID and cjSize fields comes as multiple PostScript data records until all cjSize bytes are accounted for. Each variable-size record has the following structure.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

PostScriptDataRecordSize

nEscape

nIgnore

PostScriptDataSize

PostScriptData (variable)

...

...

nAlignment (variable)

...

...

PostScriptDataRecordSize (4 bytes): A 32-bit unsigned integer that specifies the size, in bytes, of this PostScript data record. This value is based upon the value of PostScriptDataSize as follows:

Value of (PostScriptDataSize modulo 4)

Value of PostScriptDataRecordSize

0

PostScriptDataSize + 16

1

PostScriptDataSize + 15

2

PostScriptDataSize + 18

3

PostScriptDataSize + 17

nEscape (2 bytes): A 16-bit unsigned integer that specifies the escape code. It MUST be one of the following values; otherwise, this record is ignored.

Value

Meaning

POSTSCRIPT_IDENTIFY

0x1005

Specify either PostScript–centric or GDI–centric mode to the printer driver.

POSTSCRIPT_INJECTION

0x1006

Insert a block of raw data into a PostScript stream.

nIgnore (2 bytes): An unsigned integer that SHOULD be zero and MUST be ignored on receipt.

PostScriptDataSize (4 bytes): A signed integer that specifies the size of the PostScriptData field, in bytes.

PostScriptData (variable): The PostScript data.

nAlignment (variable): A buffer that is included to ensure the record is 32-bit aligned. The contents of this field MUST be ignored. The size of this field is based upon the value of PostScriptDataSize as follows:

Value of (PostScriptDataSize modulo 4)

Size of nAlignment

0

4 bytes

1

3 bytes

2

6 bytes

3

5 bytes