These apps have support for huge amount of printers and allow printing over Wi-Fi, Bluetooth, and most importantly, USB.
It seems they might be based on some existing project, though. They all have very similar UI, and function the same.
Printer2Go and PrintHand don’t just have similar UI, but exactly the same UI.
The CUPS Printing app is a solution for printing over network. It basically makes up for the fact CUPS is not discoverable by using JmDNS for multicast DNS; you can achieve the same by installing Avahi on the computer that runs the CUPS instance that’s physically connected to the printer.
I believe OP is looking for an app that will print to a printer connected directly to the phone’s USB port.