无法将PdfPage作为BitmapImage保存到磁盘

时间:2015-02-27 05:16:35

标签: c# xaml windows-store-apps microsoft-metro winrt-xaml-toolkit

我尝试将PdfDocument的网页作为一组BitmapImage保存到磁盘中,我正在使用WinRTXamlToolkit。

PdfPage page = pdfd.GetPage(0); // pdfd is a loaded PdfDocument
InMemoryRandomAccessStream str=new InMemoryRandomAccessStream();
await page.RenderToStreamAsync(str);
BitmapImage bmp = new BitmapImage();
await bmp.SetSourceAsync(str);

WriteableBitmap wb = await WriteableBitmapFromBitmapImageExtension.FromBitmapImage(bmp);

StorageFolder sfo;
sfo = await KnownFolders.DocumentsLibrary.CreateFolderAsync("PDFasBMP", CreationCollisionOption.OpenIfExists);

await WriteableBitmapSaveExtensions.SaveToFile(wb,sfo,"Yahooo.bmp");

输出" Yahooo.bmp"是一个不可读的58字节文件。我错过了什么?该问题与WinRTXamlToolkit无关,因为当BitmapImage设置为Web中的图像时,它会正确保存到磁盘,因此问题在于PdfPage的工作方式。

1 个答案:

答案 0 :(得分:2)

跳过BitmapImage并将PDF直接加载到WriteableBitmap中:

WriteableBitmap wb = new WriteableBitmap(1,1);
await wb.SetSourceAsync(str);

无法从BitmapImage中提取像素,因此WriteableBitmapFromBitmapImageExtension.FromBitmapImage必须从其他地方获取数据:当从Web加载BitmapImage时它起作用,因为FromBitmapImage可以获取BitmapImage的UriSource并将该URI加载到WriteableBitmap的。