当前位置: 代码迷 >> ASP.NET >> 关于转换为PDF的有关问题
  详细解决方案

关于转换为PDF的有关问题

热度:217   发布时间:2013-02-25 00:00:00.0
关于转换为PDF的问题
有没有办法把当前的一个页面转换为Pdf格式的文件,包括上面的图片
我看有把单个table或者图片保存到PDF上面的程序,但是一个页面很多图片,也有很多内容
怎么全部转换过去,保存后跟页面的样式类似


------解决方案--------------------------------------------------------
这个貌似有工具
------解决方案--------------------------------------------------------
水表就有这样的功能
------解决方案--------------------------------------------------------
http://blog.csdn.net/KimmKing/archive/2008/01/07/2029351.aspx?P_AVPASS=PHDGBITAVPASST

------解决方案--------------------------------------------------------
可以使用Ghostscript ,免费的



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>



 
C# code
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;                    }
  相关解决方案