Open PDFs from in-memory data in UWP

Nutrient UWP SDK supports a number of different ways of opening documents. This guide explains how to use IBuffer to open a document.

Note that UWP introduces very specific rules around file access permissions, and it’s worth reading about them here if you’re not familiar.

Microsoft also has several guide articles that cover topics such as working with file pickers, tracking recently used files, and much more.

Introduction

For opening a document, you must have added a PdfView to your desired XAML. You’ll also need to assign a Name for interacting with it through code. In this example, thePdfView is simply named PDFView:

<pspdfkit:PdfView License="{StaticResource PSPDFKitLicense}" Name="PDFView"/>

The rest of the process needs to be done after the PdfView Control is loaded. The easiest way to ensure that is the case is by using the PdfView.InitializationCompletedHandler event:

PDFView.InitializationCompletedHandler += (pdfView, document) =>
{
    // ...
};

If you don’t intend to open a document straight away, and you know that the PdfView will always be initialized, you can skip this step and open the document whenever it’s convenient by referring to the following sections.

Opening the document

First, you’ll need to get your buffer containing the document from somewhere. In this example, you’ll read the buffer from a StorageFile, but it can originate from wherever is more convenient for your use case, as long as it’s an IBuffer:

var buffer = await FileIO.ReadBufferAsync(file);

Then, to display the document, you must use the relevant creator method from DocumentSource. These creators instantiate a DocumentSource, which is used by the PdfView like so:

// Open and display the PDF in the Nutrient `PdfView`.
var documentSource = DocumentSource.CreateFromBuffer(buffer);
await PDFView.Controller.ShowDocumentAsync(documentSource);