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)?
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
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.
I wrote an open source Python program called ofc_media that basically does the unzipping mentioned in lesmana's answer, but automates the search process a bit. It also works on OpenDocument format documents, can limit the extraction to certain file extensions, etc.
Saving a Word document as a web page is a technique used on Windows to extract all the images into a folder: http://support.microsoft.com/kb/555171
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.