Как получить имя и путь только что вставленной в документ картинки (MS Word) к C#? - PullRequest
0 голосов
/ 28 января 2020

У меня есть документ, и я вставляю изображение (имя koala.jpg из C: \ Data) в этот документ. Я хочу проверить, что я вставил именно эту картинку (koala.jpg из C: \ Data, а не другой картинки). Поэтому я надеюсь, что получу имя и путь к этой картинке, которая была вставлена. Я нашел много на Inte rnet, но у меня нет никакой хорошей идеи, чтобы решить эту проблему. Я обнаружил LinkFormat.SourceFullName в Microsoft.Office.Interop.Word, но не знаю, как его использовать. Я думаю, что LinkFormat.SourceFullName используется для типа Inser Picture «Ссылка на файл». Но моя картинка вставляется по умолчанию "Вставить" (не Вставить ссылку на файл). Я надеюсь, что вы можете дать мне идею исправить мою проблему.

enter image description here

Microsoft.Office.Interop.Word.Application oWord = (Microsoft.Office.Interop.Word.Application)w;
_activeDoc = oWord.ActiveDocument; 

MessageBox.Show(_activeDoc.InlineShapes[1].LinkFormat.SourceFullName.ToString());//is error 

1 Ответ

2 голосов
/ 28 января 2020

Word не хранит эту информацию в документе. Он сохраняет имя исходного файла в Word Open XML, но не сохраняет путь к исходному файлу. И имя файла не предоставляется объектной модели («interop»), его можно извлечь только из Word Open XML (который можно прочитать из «interop», через свойство Range.WordOpenXML.

Если вам нужно отследить полный путь к файлу изображения, тогда вашему приложению необходимо управлять интерфейсом, который использовался для его вставки. Либо откройте диалоговое окно «Свернуть самостоятельно», либо используйте встроенное диалоговое окно Word.

Возможны оба варианта, но последний требует PInvoke при использовании C#, так как аргументы диалогового окна "связаны с поздним числом" в объектной модели Word и, следовательно, недоступны через объектную модель для C#.

Пример использования встроенных диалоговых окон Word в C# приведен в ответе Переполнение стека . Список встроенных диалоговых окон с их аргументами можно найти по адресу * 1013. *. Аргумент встроенного диалогового окна для возврата пути к файлу для выбранного пользователем изображения: Name.

...