Windows商店应用程序 - 显示PDF

3
我正在创建一个Windows商店应用程序(以前称为Metro应用程序),它能够读取并显示多种不同的文件类型(如jpg、wmv、pdf等)。每种文件类型都使用相应的XAML控件显示(例如,jpg使用Image,wmv使用MediaElement)。我遇到的问题是如何显示PDF文件。似乎我必须将其转换为图像才能显示。我已经调查了使用Magick.NET,但它针对的是.NETFramework而不是.NETCore。我找到的其他框架需要许可证。有没有解决方案可以在我的应用程序中显示PDF?
1个回答

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;

所以它基本上只是创建一个包含PDF内容的图像,然后显示它。不知道是否有任何不涉及图像的方法。 - Chris Neve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接