In VS C#, I'm trying to replace Spire (a third party .pptx creator) with OpenXML. (Spire is probably a simplifictation written on top of PresentationML, something like CloseXML is for Excel.)
There are a relatively small number of functions and lines of code to be replaced. In the current code using Spire, I can create a "presentation" in memory, add slides to it, add shapes to the slides, and then save the presentation to a file, which I specify as a memory stream. I can then zip and export the memory stream. Works slick.
To replace Spire I started working with OpenXML replacing the Spire functions one at a time. I'm using the Open XML SDK tool, and comfortable with it.
Using only OpenXML, I am able to create a PresentationDocument in a memory stream. And I'm able to build slides and add shapes to them. However, in trying to add the slides to the presentation, I encountered some confusion in needing to add lots of OpenXML "parts" to the PresentationDocument in order to add the slides in the right location.
I figured I could copy a lot of the SDK reflected code to build all those parts, however...
I thought instead maybe I could create a "real" PPTX, put it in my AppData folder, open from disk, and modify it. So I would not have to assemble the full PPTX in OpenXML.
I was able to locate and open the PPTX from disk:
PresentationDocument presentationDoc1 = PresentationDocument.Open(path1, false);
However at this point I cannot figure out how to copy, save, clone or convert that into a MemoryStream such as this:
var wrkFileStream = new MemoryStream();
PresentationDocument presentationDoc2 = PresentationDocument.Create(wrkFileStream, 0);
If I could do that, I would have a pre-built PresentationDocument that I could then connect to the existing code for slides and slide shapes.
So the question is, how might I copy, save, clone or convert PresentationDocument read from disk into a PresentationDocument in a memory stream?