Ususally if some action manages to make a component whose setVisible method has been called (with true as the argument), invisible, calling setSize (i.e. setSize(100,100)) will force the entire componentto become visible.
Its kind of a hack but always seems to work for me.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com