尝试从演示文稿文档中获取所有幻灯片部分时,Power Point模板损坏

时间:2017-05-17 17:01:06

标签: c# openxml powerpoint-2013

代码如下,

byte[] reportByteArray = null;
        using (MemoryStream memoryStreamObj = new MemoryStream())
        {
            memoryStreamObj.Write(reportTemplateByteArray, 0, (int)reportTemplateByteArray.Length);
            using (PresentationDocument presentationDocumentObj = PresentationDocument.Open(memoryStreamObj,true))
         {                   
               //made changes to template

         }
            reportByteArray = memoryStreamObj.GetBuffer();
     }

最后一行代码使得power point模板损坏。我的openxml版本是2.5。请告诉我哪里出错了。

  • 修改

以下是我如何加载memoryStreamObj,

{{1}}

1 个答案:

答案 0 :(得分:1)

以下是该问题,

memoryStreamObj.GetBuffer();

改为使用以下内容,

memoryStreamObj.ToArray();

MSDN文档如下,

请注意,缓冲区包含可能未使用的已分配字节。例如,如果字符串" test"写入MemoryStream对象,GetBuffer返回的缓冲区长度为256,而不是4,未使用252字节。要仅获取缓冲区中的数据,请使用ToArray方法;但是,ToArray会在内存中创建数据副本。

有关详细信息,请参阅以下链接

When is GetBuffer() on MemoryStream ever useful?