Fridrich Strba officially announced public availability of libmspub, a free library for reading and converting MS Publisher documents.
The code will be first used in LibreOffice 3.7.
So far the library is capable of reading v2003+ files with bitmaps, basic text formatting features (typeface, font size and color), shapes with fills.
Here is an example from stocklayouts.com opened with LibreOffice Draw:
SVG also doesn't have a notion of linked text frames, albeit this could be solved thanks to recent Adobe's work on CSS. And then there is the whole sad story of flowed text in SVG. The example below is a good illustration of that, because contrary to that LibreOffice renders the text in frames just fine.
This project is being worked on by Brennan Vincent, a Google Summer of Code student who is co-mentored by Fridrich Strba of LibreOffice team and Valek Filippov of truly yours re-lab team. Fridrich also keeps working on both Corel DRAW and Visio support in LibreOffice.
The libmspub library is the 3rd collaborative project between LibreOffice and re-lab. Architecturally it's a lot like both of the other libraries and has pretty much the same prerequisites: libwpd, libwpg, writerperfect. All source code is in a public Git repository.
The story of the libmspub project dates back to late 2010 when the Scribus team expressed an interest in at least a basic reverse-engineered specification of Microsoft Publisher files. The re-lab project did that, but the Scribus team turned out to be undermanned to have a go at a converter.
Hence the work on reverse-engineering .pub was temporarily put on hold. However OLE Toy app which was specifically created for examining .pub files eventually started supporting all kinds of proprietary file formats such as Visio, Corel DRAW, Macromedia Freehand etc.
Today OLE Toy is the central part of reverse-engineering workflow in both teams, and with this GSoC project it's destined to fulfill its original role. Better late than never.
If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog: