我正在创建一个Windows商店应用程序(以前称为Metro应用程序),它能够读入并显示几种不同的文件类型(jpg,wmv,pdf等)。使用适当的XAML控件显示每种文件类型(例如,jpg使用Image,wmv使用MediaElement)。我遇到的一个问题是显示PDF。我似乎必须将其转换为要显示的图像。我已经调查过使用Magick.NET但是它的目标是.NETFramework而不是.NETCore。我找到的其他框架需要许可证。是否有在我的应用程序中显示PDF的解决方案?
答案 0 :(得分:3)
从Build 2013中检出this video,了解如何在Windows应用商店应用中呈现PDF内容。如果有办法,就可以了。
答案 1 :(得分:3)
观看Nate Diamond提供的视频的前10分钟后,渲染PDF是一项简单的任务。这是Windows 8.1的解决方案,因为PdfDocument和PdfPage类是该版本的新增功能。下面将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;