Save output to a stream

By default GroupDocs.Viewer saves output results to the local disk but we also provide a way to save output results into a stream.

There are three interfaces that we can utilize:

  • IFileStreamFactory - defines the methods that are required for instantiating and releasing output file stream.
  • IPageStreamFactory - defines the methods that are required for instantiating and releasing output page stream.
  • IResourceStreamFactory - defines the methods that are required for creating resource URL, instantiating and releasing output HTML resource stream.

Let’s say that instead of saving rendering results to the local disk we want to have all the output file or output files in form of stream or list of streams.

What we need to do is to implement one or two of the interfaces listed above.

In this example, we’ll render into HTML with embedded resources so we need to implement only IPageStreamFactory interface.

// Create the list to store output pages
List<MemoryStream> pages = new List<MemoryStream>();

using (Viewer viewer = new Viewer("sample.docx"))
    MemoryPageStreamFactory pageStreamFactory = new MemoryPageStreamFactory(pages);

    ViewOptions viewOptions =

internal class MemoryPageStreamFactory : IPageStreamFactory
    private readonly List<MemoryStream> _pages;

    public MemoryPageStreamFactory(List<MemoryStream> pages)
        _pages = pages;

    public Stream CreatePageStream(int pageNumber)
        MemoryStream pageStream = new MemoryStream();


        return pageStream;

    public void ReleasePageStream(int pageNumber, Stream pageStream)
        //Do not release page stream as we'll need to keep the stream open

© Aspose Pty Ltd 2001-2022. All Rights Reserved.