При использовании библиотеки DocX я создаю документ docx на сервере, а затем загружаю его.
Для этого мне нужно преобразовать мой документ в массив байтов.
Для этого я ранее сохранял документ в виде физического файла следующим образом:
// Save all changes to this document.
document.SaveAs(GENERATED_DOCX_LOCATION);
return System.IO.File.ReadAllBytes(GENERATED_DOCX_LOCATION);
но я бы предпочел этого не делать. Можно ли сериализовать этот объект, чтобы загрузить его без физического сохранения?
Я уже пробовал это:
private byte[] ObjectToByteArray(object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
С :
return this.ObjectToByteArray(document);
Но очевидно, что DocX не реализует ISerializable.
ИЗМЕНИТЬ: приведенный ниже код также не работает
byte[] byteArray = null;
using (var stream = new MemoryStream())
{
document.SaveAs(stream);
byteArray = stream.ToArray();
}
return byteArray;