You should consider adding the @Override annotation to all methods that you intend to be override implementations. In this case the compiler would then have picked up on the fact that hashcode() doesn't override any inherited methods and an error to that effect would have been displayed.
Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
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