PrinterStateReason (Java Platform SE 8 )
Keywords: javax.print.attribute.standard.PrinterStateReason class
Date: 2026-04-17

javax.print.attribute.standard

## Class PrinterStateReason

- java.lang.Object
- - javax.print.attribute.EnumSyntax
  - - javax.print.attribute.standard.PrinterStateReason

- All Implemented Interfaces:
    Serializable, Cloneable, Attribute

      public class PrinterStateReason
      extends EnumSyntax
      implements Attribute

  Class PrinterStateReason is a printing attribute class, an enumeration, that provides additional information about the printer's current state, i.e., information that augments the value of the printer's `PrinterState` attribute. Class PrinterStateReason defines standard printer state reason values. A Print Service implementation only needs to report those printer state reasons which are appropriate for the particular implementation; it does not have to report every defined printer state reason.

  Instances of PrinterStateReason do not appear in a Print Service's attribute set directly. Rather, a `PrinterStateReasons` attribute appears in the Print Service's attribute set. The `PrinterStateReasons` attribute contains zero, one, or more than one PrinterStateReason objects which pertain to the Print Service's status, and each PrinterStateReason object is associated with a `Severity` level of REPORT (least severe), WARNING, or ERROR (most severe). The printer adds a PrinterStateReason object to the Print Service's `PrinterStateReasons` attribute when the corresponding condition becomes true of the printer, and the printer removes the PrinterStateReason object again when the corresponding condition becomes false, regardless of whether the Print Service's overall `PrinterState` also changed.

  IPP Compatibility: The string values returned by each individual `PrinterStateReason` and associated `Severity` object's `toString()` methods, concatenated together with a hyphen (`"-"`) in between, gives the IPP keyword value for a `PrinterStateReasons`. The category name returned by `getName()` gives the IPP attribute name.

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static PrinterStateReason` | `CONNECTING_TO_DEVICE` The printer has scheduled a job on the output device and is in the process of connecting to a shared network output device (and might not be able to actually start printing the job for an arbitrarily long time depending on the usage of the output device by other servers on the network).
    `static PrinterStateReason` | `COVER_OPEN` One or more covers on the device are open.
    `static PrinterStateReason` | `DEVELOPER_EMPTY` The device is out of developer.
    `static PrinterStateReason` | `DEVELOPER_LOW` The device is low on developer.
    `static PrinterStateReason` | `DOOR_OPEN` One or more doors on the device are open.
    `static PrinterStateReason` | `FUSER_OVER_TEMP` The fuser temperature is above normal.
    `static PrinterStateReason` | `FUSER_UNDER_TEMP` The fuser temperature is below normal.
    `static PrinterStateReason` | `INPUT_TRAY_MISSING` One or more input trays are not in the device.
    `static PrinterStateReason` | `INTERLOCK_OPEN` One or more interlock devices on the printer are unlocked.
    `static PrinterStateReason` | `INTERPRETER_RESOURCE_UNAVAILABLE` An interpreter resource is unavailable (e.g., font, form).
    `static PrinterStateReason` | `MARKER_SUPPLY_EMPTY` The device is out of at least one marker supply (e.g.
    `static PrinterStateReason` | `MARKER_SUPPLY_LOW` The device is low on at least one marker supply (e.g.
    `static PrinterStateReason` | `MARKER_WASTE_ALMOST_FULL` The device marker supply waste receptacle is almost full.
    `static PrinterStateReason` | `MARKER_WASTE_FULL` The device marker supply waste receptacle is full.
    `static PrinterStateReason` | `MEDIA_EMPTY` At least one input tray is empty.
    `static PrinterStateReason` | `MEDIA_JAM` The device has a media jam.
    `static PrinterStateReason` | `MEDIA_LOW` At least one input tray is low on media.
    `static PrinterStateReason` | `MEDIA_NEEDED` A tray has run out of media.
    `static PrinterStateReason` | `MOVING_TO_PAUSED` Someone has paused the printer, but the device(s) are taking an appreciable time to stop.
    `static PrinterStateReason` | `OPC_LIFE_OVER` The optical photo conductor is no longer functioning.
    `static PrinterStateReason` | `OPC_NEAR_EOL` The optical photo conductor is near end of life.
    `static PrinterStateReason` | `OTHER` The printer has detected an error other than ones listed below.
    `static PrinterStateReason` | `OUTPUT_AREA_ALMOST_FULL` One or more output areas are almost full (e.g.
    `static PrinterStateReason` | `OUTPUT_AREA_FULL` One or more output areas are full (e.g.
    `static PrinterStateReason` | `OUTPUT_TRAY_MISSING` One or more output trays are not in the device.
    `static PrinterStateReason` | `PAUSED` Someone has paused the printer and the printer's `PrinterState` is STOPPED.
    `static PrinterStateReason` | `SHUTDOWN` Someone has removed a printer from service, and the device may be powered down or physically removed.
    `static PrinterStateReason` | `SPOOL_AREA_FULL` The limit of persistent storage allocated for spooling has been reached.
    `static PrinterStateReason` | `STOPPED_PARTLY` When a printer controls more than one output device, this reason indicates that one or more output devices are stopped.
    `static PrinterStateReason` | `STOPPING` The printer is in the process of stopping the device and will be stopped in a while.
    `static PrinterStateReason` | `TIMED_OUT` The server was able to connect to the output device (or is always connected), but was unable to get a response from the output device.
    `static PrinterStateReason` | `TONER_EMPTY` The device is out of toner.
    `static PrinterStateReason` | `TONER_LOW` The device is low on toner.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `PrinterStateReason(int value)` Construct a new printer state reason enumeration value with the given integer value.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Class<? extends Attribute>` | `getCategory()` Get the printing attribute class which is to be used as the "category" for this printing attribute value.
    `protected EnumSyntax[]` | `getEnumValueTable()` Returns the enumeration value table for class PrinterStateReason.
    `String` | `getName()` Get the name of the category of which this attribute value is an instance.
    `protected String[]` | `getStringTable()` Returns the string table for class PrinterStateReason.

    - ### Methods inherited from class javax.print.attribute.EnumSyntax

      `clone, getOffset, getValue, hashCode, readResolve, toString`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### OTHER

          public static final PrinterStateReason OTHER

      The printer has detected an error other than ones listed below.

    - #### MEDIA_NEEDED

          public static final PrinterStateReason MEDIA_NEEDED

      A tray has run out of media.

    - #### MEDIA_JAM

          public static final PrinterStateReason MEDIA_JAM

      The device has a media jam.

    - #### MOVING_TO_PAUSED

          public static final PrinterStateReason MOVING_TO_PAUSED

      Someone has paused the printer, but the device(s) are taking an appreciable time to stop. Later, when all output has stopped, the `PrinterState` becomes STOPPED, and the PAUSED value replaces the MOVING_TO_PAUSED value in the `PrinterStateReasons` attribute. This value must be supported if the printer can be paused and the implementation takes significant time to pause a device in certain circumstances.

    - #### PAUSED

          public static final PrinterStateReason PAUSED

      Someone has paused the printer and the printer's `PrinterState` is STOPPED. In this state, a printer must not produce printed output, but it must perform other operations requested by a client. If a printer had been printing a job when the printer was paused, the Printer must resume printing that job when the printer is no longer paused and leave no evidence in the printed output of such a pause. This value must be supported if the printer can be paused.

    - #### SHUTDOWN

          public static final PrinterStateReason SHUTDOWN

      Someone has removed a printer from service, and the device may be powered down or physically removed. In this state, a printer must not produce printed output, and unless the printer is realized by a print server that is still active, the printer must perform no other operations requested by a client. If a printer had been printing a job when it was shut down, the printer need not resume printing that job when the printer is no longer shut down. If the printer resumes printing such a job, it may leave evidence in the printed output of such a shutdown, e.g. the part printed before the shutdown may be printed a second time after the shutdown.

    - #### CONNECTING_TO_DEVICE

          public static final PrinterStateReason CONNECTING_TO_DEVICE

      The printer has scheduled a job on the output device and is in the process of connecting to a shared network output device (and might not be able to actually start printing the job for an arbitrarily long time depending on the usage of the output device by other servers on the network).

    - #### TIMED_OUT

          public static final PrinterStateReason TIMED_OUT

      The server was able to connect to the output device (or is always connected), but was unable to get a response from the output device.

    - #### STOPPING

          public static final PrinterStateReason STOPPING

      The printer is in the process of stopping the device and will be stopped in a while. When the device is stopped, the printer will change the `PrinterState` to STOPPED. The STOPPING reason is never an error, even for a printer with a single output device. When an output device ceases accepting jobs, the printer's `PrinterStateReasons` will have this reason while the output device completes printing.

    - #### STOPPED_PARTLY

          public static final PrinterStateReason STOPPED_PARTLY

      When a printer controls more than one output device, this reason indicates that one or more output devices are stopped. If the reason's severity is a report, fewer than half of the output devices are stopped. If the reason's severity is a warning, half or more but fewer than all of the output devices are stopped.

    - #### TONER_LOW

          public static final PrinterStateReason TONER_LOW

      The device is low on toner.

    - #### TONER_EMPTY

          public static final PrinterStateReason TONER_EMPTY

      The device is out of toner.

    - #### SPOOL_AREA_FULL

          public static final PrinterStateReason SPOOL_AREA_FULL

      The limit of persistent storage allocated for spooling has been reached. The printer is temporarily unable to accept more jobs. The printer will remove this reason when it is able to accept more jobs. This value should be used by a non-spooling printer that only accepts one or a small number jobs at a time or a spooling printer that has filled the spool space.

    - #### COVER_OPEN

          public static final PrinterStateReason COVER_OPEN

      One or more covers on the device are open.

    - #### INTERLOCK_OPEN

          public static final PrinterStateReason INTERLOCK_OPEN

      One or more interlock devices on the printer are unlocked.

    - #### DOOR_OPEN

          public static final PrinterStateReason DOOR_OPEN

      One or more doors on the device are open.

    - #### INPUT_TRAY_MISSING

          public static final PrinterStateReason INPUT_TRAY_MISSING

      One or more input trays are not in the device.

    - #### MEDIA_LOW

          public static final PrinterStateReason MEDIA_LOW

      At least one input tray is low on media.

    - #### MEDIA_EMPTY

          public static final PrinterStateReason MEDIA_EMPTY

      At least one input tray is empty.

    - #### OUTPUT_TRAY_MISSING

          public static final PrinterStateReason OUTPUT_TRAY_MISSING

      One or more output trays are not in the device.

    - #### OUTPUT_AREA_ALMOST_FULL

          public static final PrinterStateReason OUTPUT_AREA_ALMOST_FULL

      One or more output areas are almost full (e.g. tray, stacker, collator).

    - #### OUTPUT_AREA_FULL

          public static final PrinterStateReason OUTPUT_AREA_FULL

      One or more output areas are full (e.g. tray, stacker, collator).

    - #### MARKER_SUPPLY_LOW

          public static final PrinterStateReason MARKER_SUPPLY_LOW

      The device is low on at least one marker supply (e.g. toner, ink, ribbon).

    - #### MARKER_SUPPLY_EMPTY

          public static final PrinterStateReason MARKER_SUPPLY_EMPTY

      The device is out of at least one marker supply (e.g. toner, ink, ribbon).

    - #### MARKER_WASTE_ALMOST_FULL

          public static final PrinterStateReason MARKER_WASTE_ALMOST_FULL

      The device marker supply waste receptacle is almost full.

    - #### MARKER_WASTE_FULL

          public static final PrinterStateReason MARKER_WASTE_FULL

      The device marker supply waste receptacle is full.

    - #### FUSER_OVER_TEMP

          public static final PrinterStateReason FUSER_OVER_TEMP

      The fuser temperature is above normal.

    - #### FUSER_UNDER_TEMP

          public static final PrinterStateReason FUSER_UNDER_TEMP

      The fuser temperature is below normal.

    - #### OPC_NEAR_EOL

          public static final PrinterStateReason OPC_NEAR_EOL

      The optical photo conductor is near end of life.

    - #### OPC_LIFE_OVER

          public static final PrinterStateReason OPC_LIFE_OVER

      The optical photo conductor is no longer functioning.

    - #### DEVELOPER_LOW

          public static final PrinterStateReason DEVELOPER_LOW

      The device is low on developer.

    - #### DEVELOPER_EMPTY

          public static final PrinterStateReason DEVELOPER_EMPTY

      The device is out of developer.

    - #### INTERPRETER_RESOURCE_UNAVAILABLE

          public static final PrinterStateReason INTERPRETER_RESOURCE_UNAVAILABLE

      An interpreter resource is unavailable (e.g., font, form).

  - ### Constructor Detail

    - #### PrinterStateReason

          protected PrinterStateReason(int value)

      Construct a new printer state reason enumeration value with the given integer value.
      Parameters:
        `value` - Integer value.

  - ### Method Detail

    - #### getStringTable

          protected String[] getStringTable()

      Returns the string table for class PrinterStateReason.
      Overrides:
        `getStringTable` in class `EnumSyntax`
      Returns:
        the string table

    - #### getEnumValueTable

          protected EnumSyntax[] getEnumValueTable()

      Returns the enumeration value table for class PrinterStateReason.
      Overrides:
        `getEnumValueTable` in class `EnumSyntax`
      Returns:
        the value table

    - #### getCategory

          public final Class<? extends Attribute> getCategory()

      Get the printing attribute class which is to be used as the "category" for this printing attribute value.

      For class PrinterStateReason and any vendor-defined subclasses, the category is class PrinterStateReason itself.

      Specified by:
        `getCategory` in interface `Attribute`
      Returns:
        Printing attribute class (category), an instance of class `java.lang.Class`.

    - #### getName

          public final String getName()

      Get the name of the category of which this attribute value is an instance.

      For class PrinterStateReason and any vendor-defined subclasses, the category name is `"printer-state-reason"`.

      Specified by:
        `getName` in interface `Attribute`
      Returns:
        Attribute category name.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.