WPF, Silverlight, Windows Phone 8 und Windows-Store-Apps

Universal-Apps: PDF-Datei öffnen
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „Universal-Apps: PDF-Datei öffnen“.

PDF-Datei öffnen

Für das Öffnen von PDF-Dateien gibt es zwei unterschiedliche Lösungen. Die erste wäre, den Inhalt der PDF-Datei innerhalb der eigenen App anzeigen zu lassen. Die Windows-Runtime enthält dafür die nötige PdfDocument-Klasse unter dem Namespace Windows.Data.Pdf. Diese ermöglicht das Erstellen und Auslesen von PDF-Dateien. Beim Öffnen werden die jeweiligen Seiten in JPEG-Bilder gerendert, die dann beim Image-Steuerelement zugewiesen werden. Ein Beispielcode dazu ist in Listing 1 zu finden.

Eine weitere Lösung wäre das Öffnen der PDF-Datei mit einem vorinstallierten Standardprogramm. Diese Aufgabe übernimmt die Launcher-Klasse mit der LaunchFileAsync-Methode. Wird kein Standardprogramm gefunden, öffnet sich automatisch der Windows Store und zeigt Apps an, die mit dem gewünschten Datentypen umgehen können. Unter Listing 2 wird deren Implementierung gezeigt.

var fileOpenPicker = new FileOpenPicker();
fileOpenPicker.FileTypeFilter.Add(".pdf");
StorageFile storageFile = await fileOpenPicker.PickSingleFileAsync();

if (storageFile != null)
{
  PdfDocument pdfDocument = await PdfDocument.LoadFromFileAsync(storageFile);

  using (PdfPage pdfPage = pdfDocument.GetPage(0))
  {
    using (var memoryRandomAccessStream = new InMemoryRandomAccessStream())
    {
      await pdfPage.RenderToStreamAsync(memoryRandomAccessStream);

      BitmapImage bitmapImage = new BitmapImage();
      bitmapImage.SetSource(memoryRandomAccessStream);

      image.Source = bitmapImage;
    }
  }
}
 
 StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile pdfFile = await localFolder.GetFileAsync("Info.pdf");
Windows.System.Launcher.LaunchFileAsync(pdfFile);
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -