C#中 怎么吧PDF转换成图片  ,
最好是把PDF文件转换Bitmap类型,
要是用到了DLL,请告诉我下载地址和使用方法,最好这个DLL是免费的!

解决方案 »

  1.   

    Adobe   Acrobat   SDK  好像可以 可是我不知道怎么用   这个东西收费吗?  
    请各位大侠帮忙!!
      

  2.   

    itextsharp  可能也可以 就是不知道怎么用  救助........
      

  3.   

    这个是开源的,而且网上有不少介绍的文章。
    http://www.cnblogs.com/hardrock/category/33862.html
      

  4.   

    使用 pdfboxhttp://www.cnblogs.com/Jinglecat/archive/2008/05/19/1202280.html
      

  5.   

    我查了很多, 就是没有能实现的方法 ,好多都是创建PDF的  , 我想要图片!
      

  6.   

    谢谢  我也用了一下个控件  
    可是他的那个转换图片的方法在C#中用不了呀,这个方法写在了main函数里 !应该在C#中怎么用?请指教!万分感谢!
      

  7.   


    谢谢  我也用了一下个控件   
    可是他的那个转换图片的方法在C#中用不了呀,这个方法写在了main函数里 !应该在C#中怎么用?请指教!万分感谢!
      

  8.   

    参考这个 java 版本的 PDFBox ,将其转成 。net 即可http://kickjava.com/src/org/pdfbox/ExtractImages.java.htm关于如何在。net 只使用pdfbox 见 http://www.cnblogs.com/Jinglecat/archive/2008/05/19/1202280.html
      

  9.   


    我试过这个控件了,可是我不知道那个方法是提取图片的,而且他里面有一个自定义的image类型,不知道怎么转换成System.Drawing.Image类型!请指教!
    万分感谢!
      

  10.   


    谢谢!我试着从java转换到.net了 ,可是到了BufferedImage,我就转换不了。
    请您指教!
      

  11.   

    可以使用Ghostscript ,免费的,我们一直在用。下载地址 http://sourceforge.net/project/showfiles.php?group_id=1897&package_id=108733
      public IList<string> GenerateThumbnailImage(string InputFile, bool deletePDF, string filename)
            {
                return GenerateImage(InputFile, deletePDF, filename, "-dSAFER -dBATCH -dNOPAUSE -r150 -sDEVICE=jpeg -dGraphicsAlphaBits=4");
            }        private IList<string> GenerateImage(string InputFile, bool deletePDF, string filename,string Arguments)
            {
                 IList<string> result = new List<string>();
                PDFLibrary myPDFLibrary = new PDFLibrary();
                int PDFPageCount = myPDFLibrary.GetPageCount(InputFile);
                if (PDFPageCount==0)
                {
                    return result;
                }            string OutputFile = filename;            string ExtOut = Path.GetExtension(OutputFile);
                string partOut = OutputFile.Remove(OutputFile.Length - ExtOut.Length, ExtOut.Length);            if (PDFPageCount == 1)
                {
                    OutputFile=partOut+ ".jpg";
                    result.Add(OutputFile);
                    if (File.Exists(OutputFile))
                    {
                        File.Delete(OutputFile);
                    }
                }            else
                {
                    for (int i = 0; i < PDFPageCount; i++)
                    {
                        string eachFileName = partOut + (i + 1).ToString() + ".jpg";
                        result.Add(eachFileName);
                        if (File.Exists(eachFileName))
                        {
                            File.Delete(eachFileName);
                        }
                    }                OutputFile = OutputFile.Remove(OutputFile.Length - ExtOut.Length, ExtOut.Length);
                    OutputFile += "%d.jpg";
                }
                           
                ProcessStartInfo info = new ProcessStartInfo();
                info.CreateNoWindow = true;
                info.WindowStyle = ProcessWindowStyle.Hidden;
                info.WorkingDirectory = System.Configuration.ConfigurationManager.AppSettings["GhostScriptView"];
                info.Arguments =Arguments+ @" -sOutputFile=" + OutputFile + "  " + InputFile;
                info.FileName = @"gswin32c.exe";
                Process subProcess = new Process();
                subProcess.StartInfo = info;
                subProcess.Start();
                subProcess.WaitForExit(int.MaxValue);
                if (deletePDF)
                {
                    System.IO.File.Delete(InputFile);
                }
                return result;
                
            }
      

  12.   

    Songhuan 谢谢! 我试试看!
      

  13.   

    谢谢!我试着从java转换到.net了 ,可是到了BufferedImage,我就转换不了。==========刚才抽空试了一下,确实有这个问题,会抛出 "type not implemented yet" 的Exception通过Reflector发现 PDFBox 使用的 BufferedImage 中一种类型刚好处于 not implemented,目前,我也不知道有没有其他方法了希望  songhuan  的提供的能实现
      

  14.   

    songhuan  不好意思!我下载了!两个压缩文件,每个都解压出很多!我不知道怎么用!请问怎么安装呀?我在网上也没查到安装方法!
    麻烦您详细的说一下!谢谢!
      

  15.   

    http://downloads.sourceforge.net/ghostscript/gs861w32.exe?modtime=1196280996&big_mirror=1
    用上面的地址,下下来是一个安装包,默认安装。
    怎么用都贴了代码了。参考上面。主要的过程就是另外启动一个进程,给参数,给输入文件,然后输出文件。
    你可以看到方法里有用到web.config的地方。参考这样进行配置<appSettings>
    <add key="GhostScriptView" value="C:\Program Files\gs\gs8.54\bin"/> 
            <add key="GhostScriptArguments" value="-dSAFER -dBATCH -dNOPAUSE -r150 -sDEVICE=jpeg -dGraphicsAlphaBits=4"/>    
      </appSettings>
      

  16.   

    不好意思,那个PDFLibrary 是用来取有几页的。你可以默认它有多页。把这部分注释掉就可以了。
    还有,不是引用。装上了之后只是用当前进程启动新进程。不引用。你看看代码
      

  17.   

    songhuan  谢谢你 ! 实现了!图片得到了!页数也可以得到了! 万分感谢!我会另加给你20分表示对你的谢意!可是我们公司觉的启动进程不太安全(稳定),最好不用!要我用组件或能解读PDF文件提取里面的图片最好!
      

  18.   

    谢谢你的分,呵呵
    你刚才找到的那个dll好像可以这样生成。但是我没有试成功。你可以查看帮助再试试
      

  19.   


    我这那个加分的框总是显示不了!稍后再给你分!不好意思!gsdll32.dll这个Dll我根本没法引用!更别说里面的类、方法了!
      

  20.   

    PDFLibrary myPDFLibrary = new PDFLibrary();
    PDFLibrary是什么类?
      

  21.   

    aaaaaaaaaaaaaaa
      

  22.   

    请问大哥你是怎么得到图片的呢?我也用了上面帖出的代码,怎么里面有好几个类都没有哦???请大哥指点一下,谢谢!PDFLibrary myPDFLibrary = new PDFLibrary();
      

  23.   

    我也用了这个,但图片转出来不清晰。也可能是原PDF文件是扫描的。本来质量就不好。转图片后更不好。
      

  24.   

    参考这个吧,方法很多,很全,使用代码也有的。
    http://blog.csdn.net/shi0090/article/details/7262199