Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is there a (Linux) command-line tool to extract all the images from a MS Word document, (preferably one that could handle the .docx format)?

share|improve this question
Is this a linux version with a UI or Command Line Only? – Jeff F. May 23 '11 at 20:23
@Jeff - A command-line utility would be useful for large batch mode operations. – Hooked May 23 '11 at 21:29
up vote 7 down vote accepted

Since docx files are zip files you can unzip the docx file and then pick out the image files.

I have no Microsoft Office to test so I downloaded some random docx files from the internet. It seems that the images are always stored in a word/media directory in the archive.

This command will extract all files from the media directory from the archive:

unzip foo.docx "word/media/*"

This command will extract only *.jpeg files:

unzip foo.docx "*.jpeg"

Note that you have to specify "*.jpg" if the files are saved as jpg instead of jpeg. I assume that it is also possible that images are stored using a different format. I have no idea whether images can be stored in another location other than the word/media directory. You can use unzip -l to list the contents of the archive.

share|improve this answer
Well thats useful! Do you know if this holds for the older .doc formats? – Hooked May 23 '11 at 21:31
The older doc format was not zipped. It was either a monolithic XML or a binary blob. You can read more about it here. – lesmana May 23 '11 at 21:55

Saving a Word document as a web page is a technique used on Windows to extract all the images into a folder:

It might be long winded, but perhaps you could control Open Office on Linux from the command line to extract the images, possibly by converting to a web page and ending up with the images in the supporting folder it would create.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .