The following information is provided as is, and the authors take no responsibility for the correctness.
Although not an actual PDL, Zenographics IMF is used for spooling print jobs on Windows (instead of EMF) prior to conversion to the target PDL like ZjStream, PCL, PostScript...
The Zenographics SuperPrint driver spools the Windows DDI calls to IMF, and the SuperPrint Print Processor later converts this IMF into the target PDL, typically ZjStream.
http://web.archive.org/web/20020830002144/ddk.zeno.com/Reference/IMF/default.htm
This link can’t work! please correct it!
IMF element consists of the followng parts.
| Pipe Header | 20 bytes |
| Block Pointer 1 | 4 bytes |
| ... | |
| Block Pointer (n) | 4 bytes |
| Data Block 1 | n bytes |
| ... | |
| Data Block (n) | n bytes |
| Link Block | n bytes |
Pipe header is 32 bytes header (8 of 4-byte data) that carries element information. Each element carries a “Message” which is the meaning of this element. Details are described at the next section.
| Field | Size | Description |
|---|---|---|
| dwSignature | 4 bytes | dwSignature is a constant value of 0xDCA99ADC. which specifies the start of an IMF element. |
| cbNext | 4 bytes | cbNext is the size of this IMF element in bytes. |
| cbLink | 4 bytes | cbLink is the size of link block attached at the bottom of this element. |
| cbPrevious | 4 bytes | cbPrevious is size of previous IMF element. |
| dwMessageId | 4 bytes | dwMessageId specifies the type of this element. One of the SDPIPE_ constants specified further down. |
| dwMisc | 4 bytes | dwMisc is used to hold additional information for the Message. |
| dwProcessId | 4 bytes | dwProcessId holds the process ID |
| cBlocks | 4 bytes | cBlocks shows how many data blocks are used for this IMF element |
//dwMessageId constants SDPIPE_CTRL 0 SDPIPE_STARTDOC 1 SDPIPE_STARTPAGE 2 SDPIPE_ENDPAGE 3 SDPIPE_ENDDOC 4 SDPIPE_RESETDC 5 SDPIPE_CACHE 6 SDPIPE_CACHECHAR 7 SDPIPE_PUTSUBOBJ 8 SDPIPE_PUTBITMAPSUBOBJ 9 SDPIPE_UNCLIPSUBOBJ 10 SDPIPE_PATTBRUSH 11 //the following are purely informational, and optional SDPIPE_DOCINFO 12 SDPIPE_PAGEINFO 13
//Control IDs SDPIPE_CTRL_MISC_RANDOM_ACCESS 0x00000002 SDPIPE_CTRL_MISC_EOF 0xFFFFFFFF