Depending on your printer, the manufacturer might have a stock app for it. With my Epson printer, their application works pretty well.
I've also used Google's Cloud Print, as well as PrinterShare. Both work well, depending on the source of the file.
One thing that is sort of interesting is that the way Android works, sharing just sends the URL with the share command. If the website is somewhere that you have to log in to see content, and the share command will probably take you to the login page.
PrinterShare has a built in web viewer. You can actually login to the webpage and pull up the page you want to print all from within the printer app. The only downside is that PrinterShare cost quite a bit. But it does work with Bluetooth printers, wifi printers, and over the internet.