Open a local PDF file in UWP
Nutrient UWP SDK supports a number of different ways of opening documents, including using Microsoft’s StorageFile
.
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
UWP represents files with the StorageFile
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
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;