生成pdf缩略图(开源/免费)[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成pdf缩略图(开源/免费)[关闭]相关的知识,希望对你有一定的参考价值。

查看其他帖子无法找到满足我需求的适当解决方案。试图将pdf文档的第一页作为缩略图。这将作为服务器应用程序运行,因此不希望将pdf文档写入文件,然后调用第三个读取pdf的应用程序以在磁盘上生成映像。

doc = new PDFdocument("some.pdf");
page = doc.page(1);
Image image = page.image;

谢谢。

答案

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方法调用并指定选项(如文件格式,页面大小等)来更改它和许多其他选项...

另一答案

我认为Windows API Code pack for Microsoft .NET framework可能最容易做到这一点。它可以生成与Windows资源管理器相同的缩略图(也就是第一页),并且您可以选择多种尺寸,它们最高可达1024x1024,因此它应该足够了。这很简单,只需创建ShellObject.FromParsingName(filepath)并找到它的Thumbnail子类。

问题可能是您的服务器。这适用于Windows 7,Windows Vista,我猜Windows Server 2008.此外,Windows资源管理器必须能够在该计算机上显示缩略图。确保这一点的最简单方法是安装Adobe Reader。如果所有这些都不是问题,我认为这是最优雅的方式。

更新:Adobe Reader在最新版本中放弃了对缩略图的支持,因此必须使用其旧版本。

更新2:根据Roberto的评论,如果您在编辑 - 首选项 - 常规中打开缩略图选项,您仍然可以使用最新版本的Adobe Reader。

另一答案

下载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;

}
另一答案

我以前用imagemagick(转换)做过这种事。有一个.Net Wrapper,也许它值得一试:http://imagemagick.codeplex.com/releases/view/30302

另一答案

http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx

这非常有效。唯一的依赖项是GhostScript的gsdll32.dll(您需要单独下载GhostScript才能获得此功能,但不需要在生产环境中安装GhostScript),以及项目中包含的PDFSharp.dll。

以上是关于生成pdf缩略图(开源/免费)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

请问有大神知道C#怎么获取上传的文档的缩略图吗?

使用 PDF.js 生成 pdf 的缩略图

在 Android 上从 pdf 生成缩略图

Java-截取PDF中的某一页作为缩略图

以 HTML 格式生成 PDF 文件的缩略图

Python PDF缩略图预览生成