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