У меня есть такой способ загрузить файл документа из БД, который хранится в двоичном виде, а затем заменить части customxml параметрами.
Каким-то образом, когда я конвертирую байт в MemoryStream, а затем обрабатываю, что он не работает, мои пользовательские части XML не заменяются. Но если я использую FileStream и читаю тот же файл с диска, он отлично заменится!
Что не так с MemoryStream? я не могу также привести MemoryStream к FileStream или создать экземпляр Stream или т. д.
Любое предложение?
private static Stream LoadContent(byte[] content, XmlDocument parameters)
{
//FileStream works perfectly
//Stream fileStream = new FileStream(@"C:\temp\test.docx", FileMode.Open);
Stream documentStream = new MemoryStream();
documentStream.Write(content, 0, content.Length);
//Processes word file, replace custom xml parts with parameters
using (WordprocessingDocument document = WordprocessingDocument.Open(documentStream, true))
{
MainDocumentPart mainPart = document.MainDocumentPart;
Stream partStream = mainPart.CustomXmlParts.First().GetStream();
using (XmlWriter xmlWriter = XmlWriter.Create(partStream, new XmlWriterSettings { CloseOutput = false }))
{
parameters.WriteTo(xmlWriter);
xmlWriter.Flush();
}
mainPart.Document.Save();
}
return documentStream;
}