Преобразование документа Word в строку base64 C#

Я пытаюсь получить представление base64 активного документа Word, пока он все еще открыт в Word и я получаю следующую ошибку в ReadAllBytes ():

процесс не может получить доступ к файлу "путь к файлу" он используется другим процессом

public string GetEncodedTemplate()
        {
            //Convert a Word document's base64 representation
            string base64 = String.Empty;
            _application.ActiveDocument.Save();

            string docPath = _application.ActiveDocument.FullName;
            byte[] binarydata = File.ReadAllBytes(docPath);
            base64 = System.Convert.ToBase64String(binarydata, 0, binarydata.Length);
            return base64;
        }

Я понимаю, что ошибка возникает, потому что указанный документ по-прежнему открыт в Word, мой вопрос - все еще как-то можно получить представление base64 документа не прибегая к сохранению во временный файл?

Я использую C# .NET 4.0 И MS Office 2010

1 ответов


вы правы-Word имеет блокировку на текущем документе. Чтобы получить текущие байты документа, вам нужно будет скопировать существующий файл (File.Copy) или сохранить в новый файл (Document.SaveAs или IPersistFile.Save) для чтения его содержимого.