Comparison of Java API’s for Word Document Control

August 13, 2010 6 comments

Controlling a Word document manually is one thing; controlling a Word document programatically is another. Word document control allows applications to generate, modify, and read data within Word documents. At first, I was surprised by the lack of tool support and examples for doing so. Each API seems to have its own strengths and weaknesses, creating a critical decision that must be made by the developer. Even for developers that may become accustomed to one, terrific API for a specific project, other projects may require different features and a different API. I hope to share, with you, my experiences from playing around with each of the different, available API’s out there for Word document control:

POI

Docx4j

Java2Word

UNO

Aspose.Words

Provider

Apache

Apache

Owner via Google

OpenOffice.org

Aspose

Homepage http://poi.apache.org/ http://www.docx4java.org http://code.google.com/p/java2word/ http://udk.openoffice.org/ http://www.aspose.com/
Getting Started

Click

Click

Click

Click

Click
.doc Support?

Y

N

Y

Y

Y

.docx Support?

Y

Y

Y, sort of

Y

Y

Comments
  • Limited text manipulation
  • Heavy use of byte[] manipulation
  • Good documentation
  • Confusing class naming (i.e. org.docx4j.wml.R)
  • Slowest processing
  • Requires an extra service class to create .docx from generated XML
  • Limited documentation and examples
  • Requires OpenOffice.org installation
  • Documentation can be a lot of overhead and confusing
  • Very customizable
  • Great examples
  • Most readable API
  • Not freeware
Free? Licensing?

Y, Apache

Y, Apache

Y, GPL

Y, LGPL

N, Ms-PL

Of course, this chart has been tailored to my specific experience with these API’s. However, I hope this will at least reduce the amount of time you spend, looking for a proper solution for your specific problem. I definitely do not consider myself an expert in this area, so I would also gladly appreciate any feedback or comments you may have.

Cheers!

Hello, World!

August 13, 2010 Leave a comment

Welcome!

I’m very pleased to introduce you to my first programming blog, Mental Backup. My name is Bradley, and I have around 10 years of programming experience. No doubt I should have started this blog a long time ago, but I felt it’s better to start now than never. I am a recent graduate from Cal Poly in Computer Science, and I am thrilled to backup my day-to-day experiences and share them with you. I hope to contribute ideas that will be relevant and useful to you, and I also hope to learn from you all, as well. Here we go! Once again, welcome!

Categories: Uncategorized