#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
), а затем загрузить последующие страницы