查看其他帖子,找不到适合我需求的解决方案。尝试将pdf文档的第一页作为缩略图。这将作为服务器应用程序运行,因此不希望将pdf文档写到文件,然后调用读取pdf的第三个应用程序在磁盘上生成图像。
doc = new PDFdocument("some.pdf");
page = doc.page(1);
Image image = page.image;谢谢。
发布于 2011-01-12 23:57:39
Matthew Ephraim为Ghostscript发布了一个开源包装器,听起来它可以做你想要的事情,而且是在C#中。
源代码链接:https://github.com/mephraim/ghostscriptsharp
博客链接:http://www.mattephraim.com/blog/2009/01/06/a-simple-c-wrapper-for-ghostscript/
您可以简单地调用GeneratePageThumb方法来生成缩略图(或者使用带有起始和结束页码的GeneratePageThumbs为多个单独的页面生成缩略图,每个页面都是一个单独的输出文件),默认的文件格式是jpeg,但您可以更改它,以及许多其他选项,方法是使用备用的GenerateOutput方法调用并指定诸如文件格式、页面大小等选项。
发布于 2011-01-15 23:03:15
我认为Windows API Code pack for Microsoft .NET framework可能最容易做到这一点。它可以生成与Windows资源管理器相同的缩略图(这是第一页),您可以选择几种大小,它们最高可达1024x1024,因此应该足够了。这很简单,只需创建ShellObject.FromParsingName(文件路径)并找到它的缩略图子类。
问题可能出在您的服务器是什么。这在Windows7,Windows Vista和Windows Server2008上都有效。此外,Windows资源管理器必须能够在该计算机上显示缩略图。确保这一点的最简单方法是安装Adobe Reader。如果所有这些都不是问题,我认为这是最优雅的方式。
更新: Adobe Reader在最近的版本中放弃了对缩略图的支持,所以必须使用它的旧版本。
UPDATE2:根据罗伯托的评论,如果你在编辑-首选项-常规中打开缩略图选项,你仍然可以使用最新版本的Adobe Reader。
发布于 2013-05-15 07:13:13
下载PDFLibNet并使用以下代码
public void ConvertPDFtoJPG(string filename, String dirOut)
{
PDFLibNet.PDFWrapper _pdfDoc = new PDFLibNet.PDFWrapper();
_pdfDoc.LoadPDF(filename);
for (int i = 0; i < _pdfDoc.PageCount; i++)
{
Image img = RenderPage(_pdfDoc, i);
img.Save(Path.Combine(dirOut, string.Format("{0}{1}.jpg", i,DateTime.Now.ToString("mmss"))));
}
_pdfDoc.Dispose();
return;
}
public Image RenderPage(PDFLibNet.PDFWrapper doc, int page)
{
doc.CurrentPage = page + 1;
doc.CurrentX = 0;
doc.CurrentY = 0;
doc.RenderPage(IntPtr.Zero);
// create an image to draw the page into
var buffer = new Bitmap(doc.PageWidth, doc.PageHeight);
doc.ClientBounds = new Rectangle(0, 0, doc.PageWidth, doc.PageHeight);
using (var g = Graphics.FromImage(buffer))
{
var hdc = g.GetHdc();
try
{
doc.DrawPageHDC(hdc);
}
finally
{
g.ReleaseHdc();
}
}
return buffer;
}https://stackoverflow.com/questions/1592112
复制相似问题