Open a local PDF file in UWP

Nutrient UWP SDK supports a number of different ways of opening documents, including using Microsoft’s StorageFile(opens in a new tab).

Note that UWP introduces very specific rules around file access permissions, and it’s worth reading about them here(opens in a new tab) if you’re not familiar.

Microsoft also has several guide articles(opens in a new tab) 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(opens in a new tab) 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

UWP represents files with the StorageFile(opens in a new tab) class. For displaying it, you must use the relevant creator method from [DocumentSource][]. These creators instantiate a DocumentSource, which is then used by the PdfView like so:

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

A StorageFile(opens in a new tab) must be located and retrieved before being displayed. This can be done, for example, by using a file picker to present a Windows-native UI to the user.

The following example code demonstrates how to show the file picker to let the user selected a StorageFile:

// Open a picker so the user can choose a PDF.
var picker = new FileOpenPicker
{
ViewMode = PickerViewMode.Thumbnail,
SuggestedStartLocation = PickerLocationId.DocumentsLibrary,
FileTypeFilter = { ".pdf" }
};
var file = await picker.PickSingleFileAsync();
if (file == null) return;