Не удается сохранить 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.

Другие вопросы по тегам