Interoperability with Microsoft File Formats.

I recently realised that much of the code I find interesting is about interoperability. That is, I'm interested in making sure we can get at data in a range of formats. Work on libtiff, poppler, okular generators and openchange are all examples of that. I also like Qt as a very nice cross-platform API. The convergence of those interests is having Qt-style libraries and tools that can get access to data, especially data in widely used proprietary formats (e.g. those produced by Microsoft products).

I've set up a gitorious repository ( for some of that stuff.

At the moment, it mainly has a Compound File Binary Format (aka "OLE") parser, written from the MS-CFB specification.

I plan to add an EMF ("Enhanced Metafile") format parser / renderer (already written and currently used in KOffice) at some point too - just need to find some more time.

There are a lot more things that could go in there (e.g. converting the various things in MS-DTYP into Qt equivalents), but I've only implemented those things I actually need.

Contributions are welcome - I'm pretty flexible on format. If you have some suggestions, please add them to the project wiki on gitorious.


Hey, at least add an home page to that wiki before asking people to post there ;)

I've added the ISF-Qt library from KMess, which allows storage of MS Digital Ink format.

By vpilo at Mon, 03/08/2010 - 19:29

You should seriously look at the KOffice file format filters. There is so much work already done there and much more is being done all the time.

That said, I really like your idea. A MS file format library (or more) is something that I have wanted to do for some time now. I have postponed it until after the release of KOffice 2.2.

And re EMF: Great start, and it's even better now. I have enhanced it a lot since then.

By ingwa at Tue, 03/09/2010 - 11:39

I'm not trying to "steal' code from major projects. For example, the Qt tools I have for interoperability with Microsoft Exchange don't really belong in the ms-interop repo. Perhaps some of the functionality that is in KOffice would make more sense factored out into a separate library, but some of it also depends on KDE / KOffice core libs, so it is much more sensible to just put it where it belongs.

This was one of the issues that I came in discussion with the KMess guys - that there are really two parts to this interoperability stuff. The first part is code that you can use directly, and the second is pointers to code / projects that may provide useful guidance.

By brad hards at Wed, 03/10/2010 - 23:13