Извлечение картинок из word'а

Мне необходимо извлечь все картинки из docx файла. Я решил воспользоваться преобразования docx'а в zip. Есть ли какие-то способы/библиотеки для распаковки docx в zip программно? Т.е чтобы при открытии zip'а была такая раскладка папок (Вручную преобразованный docx файл в zip):Вручную преобразованный docx в zip

Просто при таком подходе:

string defaultPath,fileName,newFileName;
//Получаем значение переменных defaultPath,filename,newFileName и fileFormat
string path=defaultPath+fileName+".docx";
string fileInfo=File.ReadAllText(path,System.Text.Encoding.ASCII);
string newPath=defaultPath+newFileName+".zip";
File.WriteAllText(newPath,System.Text.Encoding.ASCII); 

Остается только папка _rels и пустой файл [Content_Types].xml. Если это сделать невозможно, то есть ли другие способы извлечения картинок из вордовского файла?


Ответы (2 шт):

Автор решения: aepot

docx это и есть сам по себе zip архив, програмно его можно открыть как zip архив теми средствами, которые могут открывать zip архивы.

Если вам надо програмно переименовать файл, то можно так.

string path = Path.Combine(defaultPath, fileName + ".docx");
string newPath = Path.Combine(defaultPath, fileName + ".zip");
File.Move(path, newPath);

К тому же, docx - это двоичный файл, а не текстовый, то есть его нельзя просто так прочитать в string. И если сделать ваш код рабочим с минимальными изменениями, тогда получится вот такой код.

string defaultPath,fileName,newFileName;
//Получаем значение переменных defaultPath,filename,newFileName и fileFormat
string path=defaultPath+fileName+".docx";
byte[] data=File.ReadAllBytes(path);
string newPath=defaultPath+newFileName+".zip";
File.WriteAllBytes(newPath,data); 
→ Ссылка
Автор решения: pincher1519

docx и есть zip. Вам нужно не преобразование, а переименовывание. Целую программу на C# нет необходимости писать с переливанием данных, достаточно скрипта, который переименует файлы. Или если у вас их не много, то можно вручную переименовать.

→ Ссылка