CUPS raster files are device-dependent raster image files that contain a PostScript page device dictionary and device-dependent raster imagery for each page in the document. These files are used to transfer raster data from the PostScript and image file RIPs to device-dependent filters that convert the raster data to a printable format.

CUPS 1.0 and 1.1 used a version 1 raster format. CUPS 1.2 introduces version 2 (compressed) and version 3 (uncompressed) formats that are a superset of the version 1 format. Applications using the CUPS Imaging API (the cupsRaster* functions) can read all formats without code changes.

The registered MIME media type for CUPS raster files is application/vnd.cups-raster.

Version 1 Raster File Format

A version 1 raster file begins with a 32-bit synchronization word: 0x52615374 ("RaSt") for big-endian architectures and 0x74536152 ("tSaR") for little-endian architectures. The writer of the raster file will use the native word order, and the reader is responsible for detecting a reversed word order file and swapping bytes as needed. The CUPS Imaging API raster functions perform this function automatically.

Following the synchronization word are a series of raster pages. Each page starts with a page device dictionary header and is followed immediately by the (uncompressed, raw) raster data for that page.

D>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned IntegerD>Unsigned Integer
Table 1: CUPS Version 1 Raster Page Device Dictionary
Bytes Type Description Values
0-63 C String MediaClass Media class string
64-127 C String MediaColor Media color string
128-191 C String MediaType Media type string
192-255 C String OutputType Output type string
256-259 Unsigned Integer AdvanceDistance 0 to 232 - 1 points
260-263 Unsigned Integer AdvanceMedia 0 = Never advance roll
1 = Advance roll after file
2 = Advance roll after job
3 = Advance roll after set
4 = Advance roll after page
264-267 Unsigned Integer Collate 0 = do not collate copies
1 = collate copies
268-271 Unsigned Integer CutMedia 0 = Never cut media
1 = Cut roll after file
2 = Cut roll after job
3 = Cut roll after set
4 = Cut roll after page
272-275 Unsigned Integer Duplex 0 = Print single-sided
1 = Print double-sided
276-283 Unsigned Integers (2) HWResolution Horizontal and vertical resolution in dots-per-inch.
284-299 Unsigned Integers (4) ImagingBoundingBox Four integers giving the left, bottom, right, and top positions of the page bounding box in points
300-303 Unsigned Integer InsertSheet 0 = Do not insert separator sheets
1 = Insert separator sheets
304-307 Unsigned Integer Jog 0 = Do no jog pages
1 = Jog pages after file
2 = Jog pages after job
3 = Jog pages after set
308-311 Unsigned Integer LeadingEdge 0 = Top edge is first
1 = Right edge is first
2 = Bottom edge is first
3 = Left edge is first
312-319 Unsigned Integers (2) Margins Left and bottom origin of image in points
320-323 Unsigned Integer ManualFeed 0 = Do not manually feed media
1 = Manually feed media
324-327 Unsigned Integer MediaPosition Input slot position from 0 to N
328-331 Unsigned Integer MediaWeight Media weight in grams per meter squared
332-335 Unsigned Integer MirrorPrint 0 = Do not mirror prints
1 = Mirror prints
336-339 Unsigned Integer NegativePrint 0 = Do not invert prints
1 = Invert prints
340-343 Unsigned Integer NumCopies 1 to 232 - 1
344-347 Unsigned Integer Orientation 0 = Do not rotate page
1 = Rotate page counter-clockwise
2 = Turn page upside down
3 = Rotate page clockwise
348-351 Unsigned Integer OutputFaceUp 0 = Output face down
1 = Output face up
352-359 Unsigned Integers (2) PageSize Width and length in points
360-363 Unsigned Integer Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print
Separations 0 = Print