Открыть PDF-файл с номером страницы / индексом в приложениях UWP

#windows #uwp #windows-10 #win-universal-app #windows-10-universal

#Windows #uwp #windows-10 #win-universal-app #windows-10-универсальный

Вопрос:

Есть ли какая-либо возможность открыть PDF-файл, доступный в локальной папке состояния (внутри каталога установки приложения) с номером страницы. Существует один метод (launchFileAsync) для открытия таких файлов, но я не нахожу никакой возможности передать номер страницы / индекс для открытия определенной страницы.

Спасибо! Любая помощь приветствуется.

Ответ №1:

UWP предоставляет класс PdfDocument для синтаксического анализа файлов PDF, и этот класс предоставляет GetPage метод для получения объекта соответствующей страницы ( PdfPage ) через индекс.

Это простой код:

 PdfDocument pdfDocument;
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("xxx.pdf");

pdfDocument = await PdfDocument.LoadFromFileAsync(file);
using (var firstPage = pdfDocument.GetPage(0))
{
    var stream = new InMemoryRandomAccessStream();
    await firstPage.RenderToStreamAsync(stream);
    // do something...
}
  

Вот полный пример кода:

Комментарии:

1. Большое вам спасибо. Просмотрел образцы и документацию. Еще несколько путаниц, это похоже на рендеринг PDF в изображение. Возможно ли отобразить все страницы и перейти на конкретную страницу, у него должен быть опыт просмотра PDF, а не просто отображение одного изображения. С нетерпением ждем новостей!

2. Здравствуйте, вы можете просмотреть общее количество страниц PDF-файла PdfDocument.PageCount , а затем вы можете создать и получить все страницы через цикл и заполнить их на изображении. Но это не рекомендуется (это потребляет много памяти). Сначала вы можете попробовать загрузить содержимое до и после указанной страницы. Например, если вам нужно прокрутить пятую страницу в начале, вы можете сначала загрузить первые пять страниц, а затем отрегулировать полосу прокрутки до низа (вы можете использовать ScrollViewer.ChangeView или ListView.ScrollIntoView ), а затем загрузить последующие страницы