As corky stated, there is a difference between cancel and delete/purge.
When you cancel a print job from an application, the app stops outputing to the "printer". Anything that has already been forwarded to the print system is out of the application's control.
The print queue is under the "printer" control. That is where you must "cancel" the output and or delete any pending output.