2014-02-05 137 views
3

我正在创建能够读入并显示多种不同文件类型(jpg,wmv,pdf等)的Windows应用商店应用程序(以前称为Metro应用程序)。每种文件类型都使用适当的XAML控件显示(例如,jpg使用Image,wmv使用MediaElement)。我遇到的一个问题是显示PDF。看来我将不得不将其转换为图像来显示。我调查了使用Magick.NET,但目标.NETFramework而不是.NETCore。我找到的其他框架需要许可证。有没有解决方案在我的应用程序中显示PDF?Windows商店应用程序 - 显示PDF

回答

3

在观看由Nate Diamond提供的视频的前10分钟后,渲染PDF是一项简单的任务。这是Windows 8.1的解决方案,因为PdfDocumentPdfPage类是该版本的新增功能。以下将StorageFile(这是一个.pdf文件)呈现为图像并将它们放入垂直滚动堆栈面板(imagePanel)中。

private async void renderPdf(StorageFile file) 
    { 
     imagePanel.Children.Clear(); 

     PdfDocument pdf = await PdfDocument.LoadFromFileAsync(file); 

     for (uint pageNum = 0; pageNum < pdf.PageCount; pageNum++) 
     { 
      PdfPage page = pdf.GetPage(pageNum); 

      InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream(); 
      await page.RenderToStreamAsync(stream); 

      BitmapImage source = new BitmapImage(); 
      source.SetSource(stream); 

      Image pdfPage = new Image(); 

      pdfPage.HorizontalAlignment = HorizontalAlignment.Center; 
      pdfPage.VerticalAlignment = VerticalAlignment.Center; 
      pdfPage.Height = page.Size.Height; 
      pdfPage.Width = page.Size.Width; 
      pdfPage.Margin = new Thickness(0, 0, 0, 5); 
      pdfPage.Source = source; 

      imagePanel.Children.Add(pdfPage); 

     } 
    } 

如果等待是不可取的,异步方法也可以作为任务运行。

PdfDocument pdf = PdfDocument.LoadFromFileAsync(file).AsTask().Result; 
+0

因此,它基本上只是创建一个PDF内容的图像,然后显示它。不知道是否有任何方式没有涉及图像。 –

3

Checkout this video来自Build 2013,用于在Windows应用商店应用中呈现PDF内容。如果有办法做到这一点,就是这样。

相关问题