最近因为工作需要,小小的研究了一下HTML生成PDF的方法,这方面的内容很多,但要么是不尽如人意的方法,要么就是那种收费的类库!为了广大.neter的福利,把自己的一点小小心得总结出来与大家分享!

    先说说我最后采用的方法吧!wkhtmltopdf,一个集成好了的exe文件(C++编写),基本的调用方法是,wkhtmltopdf www.jingzhengli.cn myhomepage.pdf,可以先在命令行测试一下,有其他的需要可以在命令行通过wkhtmltopdf --help查询,如果是超长页的花,可以用命令wkhtmltopdf www.jingzhengli.cn myhomepage.pdf -H --outline (-H是添加默认标题,--outline是添加pdf的左侧概要哦!)而且可以批量生成哦,中间用空格隔开,用命令wkhtmltopdf www.jingzhengli.cn www.jingzhengli.com myhomepage.pdf   快去试试吧!提醒下:如果是转换GB2132编码的网页是会出现乱码的哦!  好了,其他的自己琢磨琢磨吧!上面都是在命令行下测试,下面给出在C#下的调用方法:

    using System.Diagnostics;
    /// <summary>
    /// HTML生成PDF
    /// </summary>
    /// <param name="url">地址</param>
    /// <param name="path">PDF存放路径</param>
    public static bool HtmlToPdf(string url, string path)
    {
        try
        {
            if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(path))
                return false;
            Process p = new Process();
            string str = System.Web.HttpContext.Current.Server.MapPath("wkhtmltopdf.exe");
            if (!System.IO.File.Exists(str))
                return false;
            p.StartInfo.FileName = str;
            p.StartInfo.Arguments = " \"" + url + "\" " + path;
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            System.Threading.Thread.Sleep(500);

            return true;
        }
        catch (Exception ex)
        {
            HttpContext.Current.Response.Write(ex);
        }
        return false;
    }

    调用方法:HtmlToPdf("网页URL", Server.MapPath("PDF存放路径"));

    下载地址:http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.8.3.exe
    源码地址:http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.8.3.tar.bz2

    这里再给出个貌似是国人写的一个类似的,效果不佳,但值得鼓励:PageToPDF,调用方法类似,但这个的exe文件必须和itextsharp.dll放在同一目录下!且不支持长页面的生成PDF,转换新浪网就是一片白了!

    下面给出几个国外网站卖的C#编写的类库的试用版,功能强大,可惜需要License key,大家可以下载下来看看。我尝试用reflector反编译到一半就卡住不动,望有志达人为了广大.neter的福利,破解一下!
    1.ExpertPDF-HtmlToPdf-v5.4.0   $350(真黑,知识就是money啊)
    2.WnvHtmlToPDF  (这个一样的黑价,达人快来破解吧)
    3.PDFKit.NET 2.0   http://tallcomponents.com 这个网站的

    这收费的就太黑了,都开源时代了,还这样!下面呢,给出一些PDF生成相关的资料,有志之士可以自己研究下,说不定你也可以开发个类库,买¥350也好啊!

  1. iTextSharp,类库,创建PDF、RTF、XML等,并可解析PDF,功能最强;
  2. Report.NET,类库,创建PDF,不错;
  3. sharpPDF,类库,创建PDF,不错;
  4. iTextdotNET,类库,创建PDF,与Java原版最能保持更新同步;
  5. A pdf Forms Parser,类库,PDF解析器;
  6. pdf Library for creating pdf with tables and text, in C# ,类库,轻量级的创建,中文支持不好;
  7. pdfizer, a dumb HTML to pdf converter, in C#,转换HTML到PDF;
  8. TEXT to pdf Converter in .NET using Reporter.NET,利用Report.NET把纯文本转换成为PDF;
  9. pdf creation using C# (and Office) from RTF/DOC files,从RTF/Doc文件中生产PDF文件;
  10. Generate pdf docs from a HTML page using ASP.NET ,使用.NET把HTML生成PDF.

    希望以上资料对大家有用!也希望达人破解后能留个言,或者发个邮件至我邮箱:calexj$163.com, luqingfei$126.com

($换成@) 感谢。

posted on 2010-12-03 15:00  Louis.Lu.Sz  阅读(4135)  评论(2编辑  收藏  举报