^PN - Present Now
Ejects a section of the current label so the operator can take it.
^PN triggers a present cycle. The printer pushes a stated length of the
current label out of the mechanism, and an operator tears it off or takes it. It
draws nothing. The ZPL II guide does not document it at all, so Labelary's
reference is the only account of its single argument.
Syntax
^PNlSupport
Accepted and skipped, because it configures the printer rather than the label. It cannot change the rendered output, and Labelary skips it too.
This command drives the media out of the printer, and a render has none. Labelary is also unaffected: ^PN100 changes neither the image nor the page count (measured 2026-07-30). The renderer does not parse this command. It reports IGNORED_COMMAND at info severity, which does not reach X-Warnings. Labelary is also silent, so the rendered label is identical in both engines. — not pinned by a test
Labelary renders this command.
Parameters
lSection lengthrequired · integerHow much of the label to eject, in millimeters.
- Accepted range
- 0 to 255 mm
- Invalid value
- not documented, and we have not measured it. The renderer does not parse or measure this command.
- Test coverage
- No test at the minimum, maximum or one step outside the range.
Behavior
The length is a physical distance in millimeters, not a count on the label's dot
grid. It does not scale with the print resolution, and does not interact with
^LL or ^PW. ~PL adds to what ^PN ejects.
Labelary changes nothing for it either: ^PN100 left both the rendered label
and the page count untouched (measured 2026-07-30). The renderer does not parse
this command. It reports IGNORED_COMMAND at info severity, which does not
reach X-Warnings. Labelary is also silent, so the rendered label is identical
in both engines.
Differences from the specification
Labelary against the ZPL II guide
Where Labelary — our compatibility target — behaves differently from the printed specification.
^PNis absent from the 2006 edition of the guide. The guide gives^PNno page and no format line. Labelary's reference is the only source for its single argument. The range and the units are Labelary's account and not Zebra's. — not pinned by a test
Example
A label that would eject 100 mm on a printer:
^XA
^FO50,50^A0N,40,40^FDTake me^FS
^PN100
^XZ
Related commands
~PLAdditional Present LengthExtends how far the printer ejects media during a present cycle.^PFSlew Dot RowsFeeds the media a number of dot rows and leaves them blank.^PH / ~PHSlew to Home PositionFeeds one blank label.