Не удается сохранить PdfPage как BitmapImage на диск
Я пытаюсь сохранить страницы 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
настроено на изображение в Интернете, оно правильно сохраняется на диске, поэтому проблема в том, как работает PdfPage.
1 ответ
Пропустите BitmapImage и загрузите свой PDF прямо в WriteableBitmap:
WriteableBitmap wb = new WriteableBitmap(1,1);
await wb.SetSourceAsync(str);
Невозможно извлечь пиксели из BitmapImage, поэтому WriteableBitmapFromBitmapImageExtension.FromBitmapImage должен получать данные из другого места: он работает, когда BitmapImage загружается из Интернета, поскольку FromBitmapImage может получить UriSource для BitmapImage и загрузить этот URI в WriteableBitmap.