zpl.tools
Graphics and images

^ID - Image Delete

Deletes a stored object from printer memory.

^ID removes a stored object so that a printer's memory does not fill up. The guide calls it Object Delete, because it deletes graphics, fonts, encoding tables and stored formats, and not images only. The guide documents it inside a format that stores a replacement. The renderer does not implement the asterisk wildcard: ^IDR:*.GRF deletes nothing here, and Labelary clears every stored graphic.

Syntax

^IDd:o.x

Support

Partially supportedparsed: full · state: partial · rendered: full

The command renders, with the caveat below.

Deletes by exact object name. The renderer does not implement the asterisk wildcard, so ^IDR:*.GRF deletes nothing. — not pinned by a test

Labelary renders this command.

Parameters

dStorage deviceoptional · single character

Which memory device to delete from.

Default
R:
Invalid value
discarded, and the default applies. This service keeps one object store, so the device letter does not narrow the search.
Test coverage
The invalid-value rule is not pinned by a test.
oObject nameoptional · text

Name of the object to delete. The guide accepts * as a wildcard, so ^ID*.* clears the store.

Default
UNKNOWN
Invalid value
not possible — any value is accepted. A name that was never stored is not an error, and reports no diagnostic. The renderer takes an asterisk literally, not as a wildcard; see the deviations.
Test coverage
xExtensionoptional · text

Extension of the object to delete. * matches any extension.

Default
.GRF
Invalid value
discarded, and the default applies. The extension takes no part in the lookup, because the renderer stores objects under their bare name. So ^IDR:LOGO.PNG deletes the graphic downloaded as LOGO.GRF.
Test coverage
The invalid-value rule is not pinned by a test.

Behavior

^ID takes effect in the order it appears, so a delete before a recall of the same name leaves the recall with nothing to draw. The delete-then-save pattern depends on this: delete the old object first, then store the new object under the same name.

A delete of a name that no download stored is not an error and reports no diagnostic, so a mistyped name is silent. The guide agrees: the printer ignores the command when it finds the object on no device.

The device letter and the extension play no part in the lookup here, because the renderer holds an object under its bare name. ^IDR:LOGO.PNG deletes the graphic that arrived as LOGO.GRF. On a printer, a delete from R: frees the memory at once, and the other devices recover the space at the next defragmentation.

^ID is not a field, but the guide writes an ^FS after it, and a printer accepts both forms.

Differences from the specification

zpl.tools against the ZPL II guide

Where our renderer behaves differently from the specification.

  • The renderer does not implement the asterisk wildcard. ^IDR:*.GRF looks for an object literally named *, finds none and deletes nothing. Delete objects by their exact name. — not pinned by a test

zpl.tools against Labelary

Where our output differs from Labelary for the same input. These are the differences that break a migration.

  • Labelary honors the wildcard. We measured this on 2026-07-29: ^IDR:*.GRF removed a graphic stored as LOGO.GRF there and left it in place here. — not pinned by a test

Example

Two labels. The first draws the graphic; the second deletes it by name and then tries to recall it, so only the text prints:

~DGR:LOGO.GRF,00080,010,
FFFFFFFFFFFFFFFFFFFF
8000FFFF0000FFFF0001
8000FFFF0000FFFF0001
8000FFFF0000FFFF0001
FFFF0000FFFF0000FFFF
FFFF0000FFFF0000FFFF
FFFF0000FFFF0000FFFF
FFFFFFFFFFFFFFFFFFFF
^XA
^FO50,50^XGR:LOGO.GRF^FS
^XZ
^XA
^IDR:LOGO.GRF^FS
^FO50,50^A0N,30,30^FDlogo deleted^FS
^FO50,120^XGR:LOGO.GRF^FS
^XZ

Open in viewer