Вопрос по ms-office, vsto, office-addins, ms-word – Сериализация текущего ActiveDocument из надстройки Office 2007

3

Я создаю надстройку VSTO Office 2007.

Мне нужно включить или найти решение, где я могу сохранить в веб-сервис сbyte[] вместо жесткого диска.

Так, Я открываю документ, переходя на веб-сайт и нажимая на URL, который нажимает «отправить мне документ Word», и я выбираю «Открыть с помощью MS Word 2007».

Документ открывается, и если я проверяю данные, которые у меня есть:

ActiveDocument.Fullname = http://[servername or ip]/[some iis folder]/file.asp?id=353&type=doc`

поэтому я думаю, что это все в памяти, так как у меня нет исходного или временного файла, если он существует.

У меня нет проблем с диска, даже если документ открыт. Как я могу сделатьbyte[] от токаActiveDocument?

Я нашел много ответов, утверждающих, что это невозможно. Но у меня также есть клиент, у которого есть старая надстройка, которая делаетbyte[] от токаActiveDocument.

Может кто-нибудь мне помочь.

Ваш Ответ

1   ответ
2

Вы можете конвертироватьActiveDocument на COM-взаимодействиеIPersistFile сохранить копию открытых документов & apos; байты к локальному временному пути, а затем прочитайте их обратно для отправки на ваш веб-сервис. В Office вы не можете прочитать байты из активного документа без предварительного сохранения на диск. Увидетьэтот блог MSDN для справки.

COM.IPersistFile compoundDocument = Application.ActiveDocument as COM.IPersistFile; 
compoundDocument.Save(filePath, false);
byte[] content = File.ReadAllBytes(filePath);
Я реализовал ваш код. И это работает :), но ActiveDocument содержит свойства и BuildInProperties. Dennis Larsen

Похожие вопросы