A print job passes through several stages: your app hands it to the system, the system queues it, and the queue sends it to the printer. A failure at any stage looks identical from the outside — nothing comes out — which is why the fix is to check the stages in order.
The most common stage to fail is the connection. Wireless printers get an address from the router, and when the router restarts or the address changes, the computer keeps looking in the old place and marks the printer offline. Turning the printer off and on again usually re-establishes the link.
The second common failure is a stuck queue. One job that failed — perhaps because the printer was out of paper at the time — can block everything sent afterwards. Clearing the queue and sending a single test page separates old failures from new ones.
Finally, jobs sometimes go to the wrong destination entirely. Systems keep virtual printers such as PDF writers, and these often become the default silently after an update.