# Interface CancelablePrintJob

All Superinterfaces:
  `DocPrintJob`

public interface CancelablePrintJob extends DocPrintJob
This interface is used by a printing application to cancel a print job. This interface extends `DocPrintJob`. A `DocPrintJob` implementation returned from a print service implements this interface if the print job can be cancelled. Before trying to cancel a print job, the client needs to test if the `DocPrintJob` object returned from the print service actually implements this interface. Clients should never assume that a `DocPrintJob` implements this interface. A print service might support cancellation only for certain types of print data and representation class names. This means that only some of the `DocPrintJob` objects returned from a service will implement this interface.

Service implementors are encouraged to implement this optional interface and to deliver a `PrintJobEvent.JOB_CANCELED` event to any listeners if a job is successfully cancelled with an implementation of this interface. Services should also note that an implementation of this method may be made from a separate client thread than that which made the print request. Thus the implementation of this interface must be made thread safe.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `cancel()`
  Stops further processing of a print job.

  ### Methods declared in interface DocPrintJob

  `addPrintJobAttributeListener, addPrintJobListener, getAttributes, getPrintService, print, removePrintJobAttributeListener, removePrintJobListener`
  Modifier and Type
  Method
  Description
  `void`
  `addPrintJobAttributeListener(PrintJobAttributeListener listener, PrintJobAttributeSet attributes)`
  Registers a listener for changes in the specified attributes.
  `void`
  `addPrintJobListener(PrintJobListener listener)`
  Registers a listener for event occurring during this print job.
  `PrintJobAttributeSet`
  `getAttributes()`
  Obtains this Print Job's set of printing attributes.
  `PrintService`
  `getPrintService()`
  Determines the `PrintService` object to which this print job object is bound.
  `void`
  `print(Doc doc, PrintRequestAttributeSet attributes)`
  Prints a document with the specified job attributes.
  `void`
  `removePrintJobAttributeListener(PrintJobAttributeListener listener)`
  Removes an attribute listener from this print job.
  `void`
  `removePrintJobListener(PrintJobListener listener)`
  Removes a listener from this print job.

- ## Method Details

  - ### cancel

    void cancel() throws PrintException
    Stops further processing of a print job.

    If a service supports this method it cannot be concluded that job cancellation will always succeed. A job may not be able to be cancelled once it has reached and passed some point in its processing. A successful cancellation means only that the entire job was not printed, some portion may already have printed when cancel returns.

    The service will throw a `PrintException` if the cancellation did not succeed. A job which has not yet been submitted for printing should throw this exception. Cancelling an already successfully cancelled Print Job is not considered an error and will always succeed.

    Cancellation in some services may be a lengthy process, involving requests to a server and processing of its print queue. Clients may wish to execute cancel in a thread which does not affect application execution.

    Throws:
      `PrintException` - if the job could not be successfully cancelled