I have wasted several days trying to overcome the dreaded "Printer Offline" problem that appears on many forums. I tried most of what I found on this forum without any success. My solution came via a friend who is an IT manager for the American Heart Association. I'm posting it with the hope that it will be helpful to someone else.
The Problem: I'm guessing that my particular problem occured because the printer has a sleep mode which cannot be turned off. I can extend the time before it goes to sleep to a maximum of 4 hours. Sometime thereafter, my PC's would report that the printer is Offline. Of all the potential solutions that I happened to find posted on the forums, the only one that worked for me was to delete the printer from the control panel and reinstall the printer. This would have to be done on both PC's.
My System: I have an HP P3005dn printer connected to a D-Link DGL4100 Gaming Router, plus two PC's (Vista 32bit and a Vista 64bit) also attached to the router. Everything is current i.e. service packs, firmware for printer and router, printer driver, etc. All of my equipment is less than 6 months old.
My Solution: My friend told me that my problem was in the router, and that I should assign a static IP address. As I poked around in my router user guide, I found an option to add a DHCP Reservation. The following is an excerpt from my user guide:
"Add/Edit DHCP Reservation: This option lets you reserve IP addresses, and assign the same IP address to the network device with the specified MAC address any time it requests an IP address. This is almost the same as when a device has a static IP address except that the device must still request an IP address from the D-Link router. The D-Link router will provide the device the same IP address every time. DHCP Reservations are helpful for server computers on the local network that are hosting applications such as Web and FTP. Servers on your network should either use a static IP address or use this option."
Since my HP printer has an embedded JetDirect print server, this looked promising. And in fact, it worked. If your router doesn't have this option, go with the static IP address.
Good luck, and best wishes.