There has been number of threads discussing how are various data member initialized and if they are constant or changeble etc. Here is a piece of code I put together to understand for myself. May be that will help others as well..
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