PowerTools for Open XML Road Map, April 2014

I recently completed a new version of ListItemRetriever.cs – which is a super important module in PowerTools for Open XML, although it operates mostly behind the scenes.  This module is responsible for translating the various pieces of markup for numbered and bulleted lists into the actual text that HtmlConverter.cs will place in the generated HTML.  It was a test of my patience – I first patched the old version, then I re-wrote it, and then I threw it all out and re-wrote it again.  I am finally happy with it.

Now that this module is completed, it is time to jump back into some serious coding for the high-fidelity HtmlConverter.cs module.  My next goal is to complete Right-To-Left languages, and East Asian languages.

I always try to do the hard stuff first, and because of my unfamiliarity with the Open XML markup that I need to parse, this is somewhat hard.  Also, because I don’t read any RTL or East Asian languages, I have to do this by pattern matching.  Sure would be easier if I could read them…  🙂

I don’t have a good idea of how long it will take.

Some time ago I wrote a crude program that uses search engines to find Open XML documents on the web and download them.  I have a pretty large collection of them – in general, my work will be to run HtmlConverter.cs on these documents and manually compare the docs in Word with the converted HTML in a browser.  Fun.

But where I’m going – I want to have this high-fidelity conversion from DOCX to HTML in really good shape in the next 2-3 months.

Following that, I want to re-write the portions of PowerTools that we use from PowerShell.  I want to re-write all of the cmdlets using the PowerShell language, not using C#.  After re-writing the cmdlets, I believe that the process to install and use the cmdlets will be a matter of dropping some files in a specific place.  It also will make it much easier for users of PowerTools to build new cmdlets, and to modify the existing cmdlets.

This is my vision for PowerTools for Open XML 3.0.

Cheers, Eric



  1. christyhit said,

    April 13, 2014 @ 3:16 pm

    Hi Eric

    I am new to openxml, and currently working on a Project which is using Openxml. I saw you have been writing many articles about Openxml, and helped me a lot. Thank you very much for sharing!

    I registerd on your Website, and hope could learn more from you. Currently I am facing a Problem, and did not find one way to solve it. I want to replace a list string and a table cell Content in with formated string, and I saw once you replies some People that it is easy to achieve. Could you please kindly guide me how to do that? Thank you very much in advance

  2. Patrik said,

    April 24, 2014 @ 6:05 am

    Hi Erik,
    you are lucky that the DOCX format requires storing all the RTL directions and doesn’t let Word do all the tricky stuff automatically (like e.g. InDesign).
    To understand more about how the RTL works (will break your brain till you get it) I recommend to read some of Richard Ishida’s articles, e.g. http://www.w3.org/International/articles/inline-bidi-markup/uba-basics

    I could provide you with some tricky details (not that I’m a RTL enabled:-)) but I work with these things on daily basis.

  3. Eric White said,

    May 1, 2014 @ 1:11 pm

    Hi Patrik,

    You are right – RTL in WordprocessingML is simpler than in HTML/CSS! DOCX doesn’t have sub-paragraph spans where we have to change the base direction from RTL to LTR, or vice versa.

    I’ve released the new HtmlConverter with RTL support:


    Please take a look – I need expert eyes on this! It is pretty good, but I am also sure that I’ve missed something somewhere!

    I also will be recording a screen-cast discussing the technical details of RTL support – I will be very happy to have your feedback after I publish the screen-cast.

    Cheers, Eric

  4. Catherine said,

    May 5, 2014 @ 12:12 am

    None of the examples for PowerTools used from PowerShell work. I know version 2.2 of PowerTools is not backwards compatible. Should I uninstall 2.2 and go back to an earlier versions when the PowerShell examples worked? In what versions did CreateCustomerOrders work?

RSS feed for comments on this post · TrackBack URI

Leave a Comment