我尝试将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的工作方式。
答案 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的。