Windows应用商店应用 - 显示PDF

时间:2014-02-05 18:53:35

标签: c# pdf windows-store-apps

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

2 个答案:

答案 0 :(得分:3)

从Build 2013中检出this video,了解如何在Windows应用商店应用中呈现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;