I've just written a cups backend for sending the data to the oki c3300 printer.
copy as /usr/lib/cups/backend/anvoki and use anvoki://<ip>:<port> in cups.
It needs the python2-requests library.
It sends the data to the printer in chunks of 2Kb until it sent 32Kb. Then it waits 30 seconds before continue.
After each chunk, it checks the status reading the printer's web page. If it is "PRINTING" or "OFFLINE" it stops sending data and waits for a a different status.
Before starting a print job, it checks if the printer is in status "Unknown" or "PROCESSING" (the status when it hangs). If so, it resets the printer via the web page.
It should be better to insert a wait between pages but I don't know how to detect the page breaks in the printfile. (Any help on this?).