Importing just tells the compiler you are going to use the package/class in your code.
Subclassing is usually done, when you need to add some functionality. Even if you subclass, you do not always gain access to members with private scope.
Importing has precisely zero effect on the generated byte code. It's just syntactic sugar to save typing and keep your code less cluttered. All it does is tell the compiler that when you write "X" you really mean "com.a.b.c.X".
Subclassing is totally unrelated to that, but it's not what you seem to think it is either. We don't subclass X to get access to members of X. (The only thing that would give us that we didn't already have would be those members which are protected, and there aren't usually that many of those anyway.) We subclass in order to specialize a type--to implement or change the behaviors or certain methods. The main purpose of inheritance is not code sharing.
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