I understand that you don't want to use any proprietary software like Microsoft Office and why. The only open-source code I know is OpenOffice itself (where .odt came from) and its
fork LibreOffice. Please see:
http://en.wikipedia.org/wiki/OpenOffice.org[
^],
http://www.openoffice.org/[
^],
http://en.wikipedia.org/wiki/LibreOffice[
^],
http://www.libreoffice.org/[
^].
You can download the source and find the code working with nearly all versions of Office documents. And, of course, .ODT and all other OpenOffice/LibreOffice documents.
If you would like to support only the newer Office Open XML, the format itself is available and is standardized under ECMA-376 and ISO/IEC 29500:2008:
http://en.wikipedia.org/wiki/Office_Open_XML[
^],
http://en.wikipedia.org/wiki/Office_Open_XML_software[
^].
Please see the comparison chart on Office Open XML software:
http://en.wikipedia.org/wiki/Comparison_of_Office_Open_XML_software[
^].
As some source code is available and open, you can use it.
And, finally, when you manage to get data from Office documents, you can map it onto PDF structure. To produce PDF itself, you can use the .NET port of iText; this port is called iTextSharp:
http://en.wikipedia.org/wiki/IText[
^],
http://itextpdf.com/[
^],
http://sourceforge.net/projects/itextsharp/[
^].
I provided links to iText, too, because nearly all documentation you need to work with iTextSharp is there, provided as Java documentation.
—SA