使用先前堆栈溢出问题中的代码:
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资源管理器中浏览目录时,我 DO 会看到与文档关联的缩略图。
我应该注意,在处理Excel和Word文档时,代码实际上正确地提取了缩略图。
编辑(参考):
答案 0 :(得分:2)
您需要指定您想要缩略图,而不是图标(默认)。 将您的代码更改为:
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);
答案 1 :(得分:1)
问题是因为您没有选择要从中创建缩略图的活动框架。
我无法在当前的机器上验证它,因为我没有Windows API,但是它为您提供标准的PDF缩略图,因为在您的代码中您没有指定用于缩略图的页面。 / p>
尝试做这样的事情:
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
答案 2 :(得分:0)
我无法让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