I have files that I want to make available in an variety of formats:

  • HTML
  • PDF
  • EPUB
  • Plain Text (maybe)

Most of the files will be sourced in doc, docx, or rtf format, so that needs to be considered.

So I need some kind of format that converts well from docx, doc, and rtf and has plenty of libraries for converting into PDF, EPUB, HTML etc. Ideally libraries in Python, but Java is also okay.

closed as too broad by gnat, GlenH7, user40980, Kilian Foth, Bart van Ingen Schenau Sep 5 '14 at 7:47

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 2
    This sounds like a job for.... XML!!! ...You can use XSL transformations to convert your intermediate XML format into some alternate format (which does not need to be XML). – FrustratedWithFormsDesigner Nov 2 '12 at 21:04
  • flagged as "not constructive" this is essentially a request for the "best" tool for a task, which is subjective and has no definitive answer (for the record, I like the question and I think it could be rewritten to fit the site format). PS my preference is org mode – Abe Nov 3 '12 at 6:35
  • Jordan, what is the purpose? Is that intermediatd file format will ever be edited manually (possibly using some special editor)? @Abe: This is a constructive question, in my opinion. You only need to want to understand what Jordan asks. – pepr Nov 5 '12 at 8:15

"doc" and "rtf" can be easily converted to "docx" using MS Word. "docx" can be can be converted to PDF, EPUB, HTML or plain text either by Word's buildin converters, or by third party tools.

Here is a link telling you more about a clean Word->HTML conversion: http://webdesign.about.com/od/beginningtutorials/qt/doc-to-html.htm

For Word->EPUB a simple google search will reveal you some free online converters and some commercial tools.

If, for what reasons ever, you don't like that solution and want a more "vendor neutral" intermediate format, then use docbook. But don't expect that this will increase the overall quality of the results, since every additional step in the conversion chain will most probably add some additional data loss.


When searching for the intermediate format, there is always a problem with presentational vs. structural markup problem.

Typically, DocBook or LaTeX sources use the clear structural markup with usually few exceptions (misuses) caused by the author.

On the other hand, Word users tend to use mainly the presentational markup (explicitly telling the block of text the font size, font family, weight, ...). Word allows the structural markup, but it is not forced too much.

Plain HTML is clearly structural, but the span and the like element allow to attach a lot of attributes to the block of text in the non-structural manner. You can clearly see the difference between the manually created HTML, technically generated HTML, and the documents converted from Word docs. Therefore, it may be difficult to find a common denominator even for HTML documents. The XML adds even more possibilities that can be misused.

But if you want to have one format that covers everything, then it probably should be XML. However, it may be one with document type designed by you for the purpose. The good thing is that there are tools for verification of your intermediate XML document. This way, you can be later sure that there is a way to the final form.

My guess is that it is almost impossible to convert various sources to the intermediate format with the good quality. It depends a lot on who created the souces. It is likely you will have to write a lot of parser for special subsets of the documents.

Python is probably a good choice. It depends on your knowledge. If you are better in Java or Perl, they can be better. I would prefer Python. (I do not have a good working knowlege of Java, and my Perl knowledge is rusty because I have found Python much better for me.)

Not the answer you're looking for? Browse other questions tagged or ask your own question.