LPRng works very well but cannot resolve one problem - if the /var/cache/samba/printing.tdb file is corrupted (due to power failure for example) then you can not print via Samba until this file is deleted (it automatically get recreated).
I setup a script that the client can use once logged in via Putty that resolves this issue - all it does is to shutdown lpd, delete the file, and restart lpd.