Windows API Code Pack - ShellFile не генерирует растровое изображение PDF

Использование кода из предыдущих вопросов о переполнении стека:

System.Drawing.Bitmap image;
ShellFile f = ShellFile.FromFilePath(fileLocation);
image = f.Thumbnail.ExtraLargeBitmap;
image.Save(tempfile, ImageFormat.Png);

Я пытаюсь использовать оконный API, чтобы получить эскиз PDF

Я склонен полагать, что это создает файл изображения, который напоминает первую страницу документа PDF.

Однако реальность такова, что он НЕ выглядит так, а просто выглядит как значок PDF.

Есть ли что-то, что мне не хватает, что требуется, прежде чем это действительно работает, как задумано?

PDF-файлы правильно связаны с Adobe Reader.

При просмотре каталогов в проводнике Windows я вижу миниатюры, связанные с документами.

Я должен отметить, что код действительно правильно извлекает эскизы при работе с документами Excel и Word.

РЕДАКТИРОВАТЬ (ссылки):

3 ответа

Вы должны указать, что вы хотите миниатюру, а не значок (по умолчанию). Измените свой код на это:

System.Drawing.Bitmap image;
ShellFile f = ShellFile.FromFilePath(fileLocation);

//force the actual thumbnail, not the icon
f.Thumbnail.FormatOption = ShellThumbnailFormatOption.ThumbnailOnly;

image = f.Thumbnail.ExtraLargeBitmap;
image.Save(tempfile, ImageFormat.Png);

Проблема в том, что вы не выбрали активный кадр, из которого вы будете создавать миниатюру.

Я не могу проверить это на моем текущем компьютере, потому что у меня нет Windows API на нем, но он дает вам стандартный эскиз PDF, потому что в вашем коде вы не указали, какую страницу использовать для миниатюры.

Попробуйте сделать что-то вроде этого:

        Image image = new Image();
        //Load image here
        int frameindex = 1; // Page number you want to use for thumbnail
        Guid guide = image.FrameDimensionsList[0];
        FrameDimension fDimension = new FrameDimension(guide);
        image.SelectActiveFrame(fDimension, frameindex);
        //Then go on to extract your thumbnail

Мне не удалось заставить ExtraLargeBitmap работать с файлами PDF, но все другие размеры (Большой, Средний и Маленький) работали нормально.

Dim MyShellFile As ShellFile = ShellFile.FromFilePath(fi.FullName)
Dim MyThumbNail As Image
MyShellFile.Thumbnail.FormatOption = ShellThumbnailFormatOption.ThumbnailOnly
MyThumbNail = MyShellFile.Thumbnail.LargeBitmap
Me.PictureBox2.Image = MyThumbNail
Другие вопросы по тегам