Because that's just another shitty implementation of a print service.
There is a reason why print services are implemented on the Desktop OS and not on the printer (well I'm sure many printers do have a shitty implementation): Because there's few Desktop OSes but so many printers. You want to split the work and implement each thing where it is most efficient.
Things a print spooler should do:
- Queue print jobs, be able to watch progress, cancel them.
- Manage permissions, maybe implement quota or similar.
- Offer desktop integration in print dialogues: N-up, shrink, duplex, and other common postprocessing features. With a print dialogue, a lot of manual labor of creating temporary files and editing them with a particular application is saved.
Don't forget manage several printers. At home I only have one so this doesn't matter. At work I need to choose between one of several printers in the building. In a school lab: students want to print and have whichever of the 3 identical printers right next to each other print it, depending on which printer isn't busy with some other student's work.
There is a reason why print services are implemented on the Desktop OS and not on the printer (well I'm sure many printers do have a shitty implementation): Because there's few Desktop OSes but so many printers. You want to split the work and implement each thing where it is most efficient.
Things a print spooler should do:
- Queue print jobs, be able to watch progress, cancel them.
- Manage permissions, maybe implement quota or similar.
- Offer desktop integration in print dialogues: N-up, shrink, duplex, and other common postprocessing features. With a print dialogue, a lot of manual labor of creating temporary files and editing them with a particular application is saved.