Извлечение картинок из word'а
Мне необходимо извлечь все картинки из docx файла. Я решил воспользоваться преобразования docx'а в zip. Есть ли какие-то способы/библиотеки для распаковки docx в zip программно? Т.е чтобы при открытии 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 шт):
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);
docx и есть zip. Вам нужно не преобразование, а переименовывание. Целую программу на C# нет необходимости писать с переливанием данных, достаточно скрипта, который переименует файлы. Или если у вас их не много, то можно вручную переименовать.