MacOS machines use their own cups server. For modern HP laser printers cups generates PostScript output but with some special settings for the target printer. The cups server on the linux machine parses the PostScript input and use his own settings to regenerate the output. On linux the filter script /usr/lib/cups/filter/hpps is called to generate the output for most HP laser printers. The problem is the PostScript output from the MacOS which seems to be ignored from cups under linux. The hpps filter script is called with an empty file and generates an empty page. The printer ignores this. We found two workarounds for the problem:
1) Send the output from MacOS compressed as gzip to the linux server. The cups server decompress the output and pipe it to the hpps filter. The filter send the source file with his own header and footer to the printer. Without special settings (e.g. banner) the output from the filter is identical to the MacOS output. To achieve this add
?compression=gzip
to the cups URI in your MacOS cups server. Call https://localhost:631 your browser (enable the interface in terminal with 'cupsctl WebInterface=yes'). Choose 'Modify Printer', authenticate and select the IPP or IPPS printing protocol. The target URI contains the previous URI. Append the line above, e.g.
ipps://<ubuntu-cups-server>/printers/<printername>?compression=gzip
Keep the description and model settings and save.
2) Install a RAW printer on the linux server with the same target URI as the HP printer. But choose Raw as Maker and Model for the printer. E.g. if your printer is named 'hp1' add 'hp1_raw' as second printer. In MacOS use the RAW printer URI as destination, e.g.
ipps://<ubuntu-cups-server>/printers/hp1_raw
A small risk remains. If someone sends on linux a non PostScript file to the raw queue the printer will print this file as text. You may get many lubricating paper pieces by printing a small PDF file.