OK. So I understand that CUPS works as a Print Spooler, managing print jobs and sending them to printers. I also understand that PPD files describe the feature-set of a printer and that CUPS uses these and filters to interface with the printer, generating an output that the printer can use to print the document (either in PostScript, PCL or whatever proprietary format the printer requires). But I'm confused as to a few aspects of this. Mainly:
- How do applications send print jobs to CUPS?
- How do applications get print options for whatever printer is selected? DO these come from the PPD file or filter that CUPS uses for the printer?
- How does this work when the printer is shared by CUPS over IPP? Does whatever device is sending a print job to CUPS do the processing locally or does the CUPS server do it? If CUPS does it, does that mean that the local device needs the PPD file to get the print options, or does CUPS send this to the local device?
- As far as I'm aware, any linux computer will probably use CUPS locally as well for printing, so how does this work in regards to print options and processing the print job into PostScript/PCL etc.
Thanks for helping to clear up my confusion.